Unity 캐릭터에 애니메이션 적용하기

2024. 12. 15. 00:15Unity

Unity 캐릭터에 애니메이션 적용하기

게임 속 캐릭터에 생동감을 불어넣는 가장 중요한 요소는 애니메이션입니다. Unity에서는 캐릭터 모델에 다양한 애니메이션을 적용하고 제어할 수 있는 강력한 도구를 제공합니다. 이번 포스팅에서는 캐릭터에 애니메이션을 적용하는 기본적인 방법부터 Animator Controller를 활용해 애니메이션을 제어하는 방법까지 단계별로 살펴보겠습니다.


1. 애니메이션 준비

1) 애니메이션 클립 임포트

  • Unity로 3D 모델을 가져올 때 FBX 파일에 애니메이션 데이터가 포함되어 있으면 자동으로 분리됩니다.
  • 또는 외부에서 별도로 제작한 .anim 파일을 Unity로 드래그 앤 드롭하여 임포트할 수도 있습니다.

2) 애니메이션 미리보기

  • 애니메이션 클립을 선택하면 Inspector 창에서 재생 버튼을 눌러 미리볼 수 있습니다.
  • 예: Idle, Walk, Run, Jump 등 다양한 상태에 맞는 애니메이션.

2. 캐릭터 모델 설정

1) 캐릭터 모델에 Animator 컴포넌트 추가

  1. Hierarchy 창에서 캐릭터 모델을 선택합니다.
  2. Inspector 창에서 Add Component 버튼을 클릭합니다.
  3. Animator를 검색하여 추가합니다.

2) 애니메이션 컨트롤러 연결

  1. Assets 창에서 Animator Controller를 생성합니다.
    • Create > Animator Controller 선택.
    • 이름을 PlayerAnimator로 설정합니다.
  2. 캐릭터의 Animator 컴포넌트에서 Controller 필드에 PlayerAnimator를 드래그하여 연결합니다.

3. Animator Controller 구성

1) Animator 창 열기

  • Window > Animation > Animator를 선택해 Animator 창을 엽니다.
  • PlayerAnimator를 선택하면 상태(State) 편집 화면이 표시됩니다.

2) 상태(State) 추가

  1. 애니메이션 클립을 Animator 창으로 드래그합니다.
  2. 각 클립은 하나의 상태로 표시됩니다.
    • 예: Idle, Walk, Run.

3) 기본 상태 설정

  • 애니메이션 상태를 우클릭하고 Set as Layer Default State를 선택합니다.
  • 보통 Idle 상태를 기본으로 설정합니다.

4. 애니메이션 상태 전환 설정

1) 전환(Transition) 만들기

  1. 상태를 우클릭한 후 Make Transition을 선택합니다.
  2. 다른 상태로 드래그하여 전환을 연결합니다.
    • 예: Idle → Walk, Walk → Run.

2) 전환 조건 설정

  1. 전환 라인을 선택하고 Inspector 창에서 조건(Conditions)을 추가합니다.
  2. Parameters 탭에서 변수 추가:
    • Speed (float): 이동 속도에 따라 상태 전환.
    • Jump (bool): 점프 애니메이션 실행.

예:

  • Speed > 0.1: Idle → Walk 전환.
  • Speed > 2.0: Walk → Run 전환.

5. 스크립트를 활용한 애니메이션 제어

Animator Controller의 파라미터를 제어하기 위해 스크립트를 작성합니다.

using UnityEngine;

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

    void Update()
    {
        // 이동 속도 계산
        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");
        speed = Mathf.Sqrt(moveX * moveX + moveZ * moveZ);

        // Animator에 Speed 파라미터 전달
        animator.SetFloat("Speed", speed);

        // 점프 입력 처리
        if (Input.GetButtonDown("Jump"))
        {
            animator.SetTrigger("Jump");
        }
    }
}
  1. 위 스크립트를 캐릭터에 추가합니다.
  2. Animator 필드에 캐릭터의 Animator를 드래그하여 연결합니다.

6. Blend Tree를 활용한 부드러운 전환

1) Blend Tree 상태 추가

  1. Animator 창에서 Create State > From New Blend Tree를 선택합니다.
  2. Blend Tree 상태를 더블 클릭하여 편집 모드로 진입합니다.

2) 애니메이션 클립 추가

  1. Inspector 창에서 Add Motion Field를 눌러 애니메이션 클립을 추가합니다.
    • 예: Idle, Walk, Run.
  2. 각 클립에 Speed 값을 설정하여 자연스럽게 전환되도록 합니다.

7. 테스트 및 디버깅

1) Play 모드에서 테스트

  • 캐릭터를 이동시키고 애니메이션이 의도한 대로 작동하는지 확인합니다.

2) 디버깅 팁

  • Animator 창에서 현재 상태를 확인하며 동작을 디버깅할 수 있습니다.
  • Animator 파라미터 값이 제대로 설정되는지 Debug Mode를 활용해 확인합니다.

8. 고급 기능

1) 루트 모션 사용

  • 애니메이션 자체의 이동 값을 활용하려면 Animator의 Apply Root Motion 옵션을 활성화합니다.

2) 애니메이션 이벤트

  • 특정 프레임에서 함수를 호출하려면 Animation Clip의 이벤트(Event) 기능을 사용합니다.

3) 레이어 및 마스크

  • 여러 애니메이션 레이어를 설정하고 특정 부분(예: 상체)만 애니메이션을 적용할 수 있습니다.

9. 요약

Unity에서 캐릭터에 애니메이션을 적용하는 방법은 다음과 같습니다:

  1. 애니메이션 클립 임포트.
  2. Animator Controller 생성 및 상태 설정.
  3. 상태 전환 및 조건 설정.
  4. 스크립트를 활용한 동적 제어.
  5. Blend Tree를 통해 부드러운 애니메이션 전환.