본문 바로가기

Unity3d

유니티에서 애니메이션 제어하기

유니티에서 애니메이션을 제어하는 방법은 다양하지만, 이 포스팅에서는 Animator 컴포넌트와 Animation 클립, 그리고 C# 스크립트를 사용하여 애니메이션을 제어하는 방법에 대해 자세하게 설명하겠습니다.

애니메이션 클립(Animation Clip) 준비하기

유니티에서 애니메이션을 제어하려면 먼저 Animation 클립이 필요합니다. Animation 클립은 게임 오브젝트의 속성(예: 위치, 회전, 크기 등)을 시간에 따라 변화시키는 애니메이션 데이터입니다. 유니티 에디터에서 직접 생성하거나, 외부 3D 모델링 프로그램에서 작성한 애니메이션을 가져올 수 있습니다.

Animator 컴포넌트 설정하기

애니메이션 클립을 게임 오브젝트에 적용하려면 Animator 컴포넌트가 필요합니다. Animator 컴포넌트를 게임 오브젝트에 추가한 후, Animator Controller를 생성하고, 애니메이션 클립을 Animator Controller에 추가하세요. Animator Controller는 애니메이션의 상태와 전환 조건을 정의하는 데 사용됩니다.

애니메이션 상태 및 전환 설정하기

Animator Controller에서 애니메이션 상태와 전환을 설정하여 애니메이션의 재생 순서를 정의할 수 있습니다. 애니메이션 상태는 각각의 애니메이션 클립에 대응하며, 전환 조건은 애니메이션 상태 간의 전환을 결정하는 규칙입니다. 전환 조건으로는 시간, 트리거, 부울, 플롯 등 다양한 타입의 변수를 사용할 수 있습니다.

C# 스크립트를 사용하여 애니메이션 제어하기

C# 스크립트를 사용하여 애니메이션 상태와 전환을 제어할 수 있습니다. 먼저, Animator 컴포넌트를 참조하고, Animator의 SetTrigger, SetBool, SetFloat 등의 메서드를 사용하여 전환 조건 변수를 설정하세요.

 

예시:

 

using UnityEngine;

public class PlayerAnimation : MonoBehaviour
{
    public Animator animator;

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("Jump");
        }
    }
}

애니메이션 이벤트 사용하기

애니메이션 이벤트는 애니메이션 클립의 특정 시점에서 코드를 실행하도록 설정할 수 있는 기능입니다. 예를 들어, 캐릭터가 공격 애니메이션 도중에 무기를 휘두를 때 사운드를 재생하거나, 충돌 판정을 수행하려면 애니메이션 이벤트를 사용할 수 있습니다.

애니메이션 이벤트 추가하기

애니메이션 이벤트를 추가하려면, 유니티 에디터의 애니메이션 창에서 원하는 프레임에 이벤트 마커를 추가한 다음, 호출할 함수의 이름을 설정하세요. 호출할 함수는 게임 오브젝트에 존재하는 스크립트에 정의되어 있어야 합니다.

 

예시:

 

using UnityEngine;

public class AttackAnimation : MonoBehaviour
{
    public void PlayAttackSound()
    {
        // 공격 사운드 재생 코드 작성
    }

    public void CheckHit()
    {
        // 충돌 판정 코드 작성
    }
}

애니메이션 레이어와 마스크 사용하기

복잡한 애니메이션을 다룰 때에는 애니메이션 레이어와 마스크를 사용하여 여러 애니메이션을 조합할 수 있습니다. 예를 들어, 캐릭터의 상체와 하체 애니메이션이 독립적으로 작동하도록 설정하려면 애니메이션 레이어와 마스크를 사용하면 됩니다.

애니메이션 레이어는 여러 애니메이션 상태를 동시에 재생할 수 있게 해주며, 애니메이션 마스크는 특정 레이어에서 특정 부위의 게임 오브젝트만 애니메이션을 적용하도록 설정할 수 있습니다.

결론

유니티에서 애니메이션을 제어하는 방법은 다양하며, 복잡한 애니메이션 시스템을 구축하기 위해 Animator 컴포넌트, Animation 클립, C# 스크립트, 애니메이션 이벤트, 애니메이션 레이어와 마스크 등을 사용할 수 있습니다. 이러한 기능들을 활용하여 다양한 게임 오브젝트의 애니메이션을 제어하고, 풍부한 게임 경험을 제공하세요.