Unity Animator 컨트롤러 및 애니메이션 트리

2024. 12. 15. 00:11Unity

Unity Animator 컨트롤러 이해 및 애니메이션 트리 만들기

Unity에서 애니메이션을 제어하는 핵심 도구는 Animator Controller입니다.
Animator Controller를 활용하면 다양한 애니메이션을 설정하고 조건에 따라 전환(트랜지션)할 수 있습니다. 이번 포스팅에서는 Animator Controller의 개념, 애니메이션 트리 구성 방법, 그리고 이를 활용한 간단한 캐릭터 애니메이션 시스템 구현 방법을 살펴보겠습니다.


1. Animator Controller란?

Animator Controller는 애니메이션 상태와 상태 간의 전환 규칙을 관리하는 Unity의 도구입니다.

  • Animation State: 특정 애니메이션 클립을 재생하는 상태.
  • Transitions: 상태 간 이동(전환)을 정의하는 규칙.
  • Parameters: 애니메이션 상태 전환을 제어하는 변수.

주요 기능:

  • 다양한 애니메이션의 관리 및 전환 설정.
  • 조건에 따른 애니메이션 변경(예: 걷기 → 뛰기).
  • Blend Tree를 활용한 애니메이션의 부드러운 조합.

2. 애니메이션 트리 만들기

1) 기본 설정

  1. 애니메이션 클립 준비
    • 캐릭터의 애니메이션 클립(예: Idle, Walk, Run)을 프로젝트에 임포트합니다.
    • 각 클립은 FBX 모델에 포함되어 있거나, 외부에서 임포트한 .anim 파일이어야 합니다.
  2. Animator Controller 생성
    • Assets > Create > Animator Controller를 선택해 생성합니다.
    • 생성한 파일의 이름을 PlayerAnimator로 설정합니다.
  3. Animator 컴포넌트 연결
    • 캐릭터에 Animator 컴포넌트를 추가합니다.
    • Controller 필드에 PlayerAnimator를 드래그하여 연결합니다.

2) 애니메이션 상태 추가

  1. Animator Window 열기
    • Window > Animation > Animator 메뉴에서 Animator 창을 엽니다.
    • PlayerAnimator를 선택하면 상태 창이 표시됩니다.
  2. 상태 추가
    • Animator 창에 애니메이션 클립을 드래그하여 상태를 생성합니다.
    • 예: Idle, Walk, Run 상태 추가.
  3. 기본 상태 설정
    • 애니메이션 상태를 우클릭하고 Set as Layer Default State를 선택해 기본 상태로 설정합니다.
    • 보통 Idle 상태를 기본으로 설정합니다.

3) 전환(Transition) 설정

  1. 상태 간 전환 추가
    • 상태를 우클릭한 후 Make Transition을 선택하고 전환할 상태로 드래그합니다.
    • 예: Idle → Walk, Walk → Run 전환 설정.
  2. 전환 조건 설정
    • 전환을 선택하고 Inspector 창에서 조건을 추가합니다.
    • 예: Speed 파라미터가 0보다 크면 Idle → Walk로 전환.

4) 파라미터 설정

  1. 파라미터 추가
    • Animator 창 상단의 Parameters 탭에서 + 버튼을 클릭하여 파라미터를 추가합니다.
    • 예:
      • Speed (float): 캐릭터의 이동 속도에 따라 애니메이션 전환.
      • Jump (bool): 점프 애니메이션 실행.
  2. 파라미터 사용
    • 각 상태 전환의 조건으로 설정합니다.
    • 예:
      • Speed > 0.1 → Idle → Walk.
      • Speed > 2.0 → Walk → Run.

3. Blend Tree로 부드러운 애니메이션 전환

Blend Tree는 여러 애니메이션 클립을 매끄럽게 혼합할 때 사용됩니다.

1) Blend Tree 생성

  1. Animator 창에서 Create State > From New Blend Tree를 선택합니다.
  2. Blend Tree 상태를 더블 클릭하여 편집 창으로 들어갑니다.

2) 애니메이션 추가

  1. Inspector 창에서 Blend Tree 편집기를 엽니다.
  2. Add Motion Field 버튼을 눌러 애니메이션 클립을 추가합니다.
    • 예: Idle, Walk, Run 애니메이션 추가.

3) Blend 파라미터 설정

  1. Blend Tree의 파라미터를 Speed로 설정합니다.
  2. 각 애니메이션 클립의 속도 값을 설정하여 자연스럽게 전환되도록 조정합니다.
    • 예:
      • Idle: Speed = 0.
      • Walk: Speed = 1.
      • Run: Speed = 2.

4. 애니메이션 컨트롤 스크립트 작성

Animator Controller를 활용하려면 스크립트를 통해 파라미터를 제어해야 합니다.

using UnityEngine;

public class PlayerAnimation : MonoBehaviour
{
    public Animator animator;
    public float speed;

    void Update()
    {
        // 이동 속도에 따라 Speed 파라미터 설정
        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");

        speed = Mathf.Sqrt(moveX * moveX + moveZ * moveZ);
        animator.SetFloat("Speed", speed);

        // 점프 입력 처리
        if (Input.GetButtonDown("Jump"))
        {
            animator.SetTrigger("Jump");
        }
    }
}

 


5. 고급 애니메이션 트리 기능

1) 복잡한 상태 전환

  • 다수의 조건을 추가하여 세밀한 제어 가능.
  • 예: Speed > 0.5 AND IsGrounded == true.

2) 다층(Layer) 애니메이션

  • 상체와 하체 애니메이션을 독립적으로 제어.
  • 예: 상체는 공격 애니메이션, 하체는 이동 애니메이션.

3) 애니메이션 이벤트

  • 특정 프레임에서 이벤트를 실행.
  • 예: 공격 애니메이션 중 특정 프레임에 데미지 처리.

6. 요약

Animator Controller는 Unity 애니메이션 시스템의 중심 도구로, 다양한 애니메이션 상태를 효율적으로 관리할 수 있습니다.

  • 기본 상태 및 전환: 상태 간 전환과 조건 설정.
  • Blend Tree: 자연스러운 애니메이션 전환.
  • 스크립트 연동: 파라미터 제어를 통해 동적인 애니메이션 구현.