Unity 캐릭터에 애니메이션 적용하기
2024. 12. 15. 00:15ㆍUnity
Unity 캐릭터에 애니메이션 적용하기
게임 속 캐릭터에 생동감을 불어넣는 가장 중요한 요소는 애니메이션입니다. Unity에서는 캐릭터 모델에 다양한 애니메이션을 적용하고 제어할 수 있는 강력한 도구를 제공합니다. 이번 포스팅에서는 캐릭터에 애니메이션을 적용하는 기본적인 방법부터 Animator Controller를 활용해 애니메이션을 제어하는 방법까지 단계별로 살펴보겠습니다.
1. 애니메이션 준비
1) 애니메이션 클립 임포트
- Unity로 3D 모델을 가져올 때 FBX 파일에 애니메이션 데이터가 포함되어 있으면 자동으로 분리됩니다.
- 또는 외부에서 별도로 제작한 .anim 파일을 Unity로 드래그 앤 드롭하여 임포트할 수도 있습니다.
2) 애니메이션 미리보기
- 애니메이션 클립을 선택하면 Inspector 창에서 재생 버튼을 눌러 미리볼 수 있습니다.
- 예: Idle, Walk, Run, Jump 등 다양한 상태에 맞는 애니메이션.
2. 캐릭터 모델 설정
1) 캐릭터 모델에 Animator 컴포넌트 추가
- Hierarchy 창에서 캐릭터 모델을 선택합니다.
- Inspector 창에서 Add Component 버튼을 클릭합니다.
- Animator를 검색하여 추가합니다.
2) 애니메이션 컨트롤러 연결
- Assets 창에서 Animator Controller를 생성합니다.
- Create > Animator Controller 선택.
- 이름을 PlayerAnimator로 설정합니다.
- 캐릭터의 Animator 컴포넌트에서 Controller 필드에 PlayerAnimator를 드래그하여 연결합니다.
3. Animator Controller 구성
1) Animator 창 열기
- Window > Animation > Animator를 선택해 Animator 창을 엽니다.
- PlayerAnimator를 선택하면 상태(State) 편집 화면이 표시됩니다.
2) 상태(State) 추가
- 애니메이션 클립을 Animator 창으로 드래그합니다.
- 각 클립은 하나의 상태로 표시됩니다.
- 예: Idle, Walk, Run.
3) 기본 상태 설정
- 애니메이션 상태를 우클릭하고 Set as Layer Default State를 선택합니다.
- 보통 Idle 상태를 기본으로 설정합니다.
4. 애니메이션 상태 전환 설정
1) 전환(Transition) 만들기
- 상태를 우클릭한 후 Make Transition을 선택합니다.
- 다른 상태로 드래그하여 전환을 연결합니다.
- 예: Idle → Walk, Walk → Run.
2) 전환 조건 설정
- 전환 라인을 선택하고 Inspector 창에서 조건(Conditions)을 추가합니다.
- 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");
}
}
}
- 위 스크립트를 캐릭터에 추가합니다.
- Animator 필드에 캐릭터의 Animator를 드래그하여 연결합니다.
6. Blend Tree를 활용한 부드러운 전환
1) Blend Tree 상태 추가
- Animator 창에서 Create State > From New Blend Tree를 선택합니다.
- Blend Tree 상태를 더블 클릭하여 편집 모드로 진입합니다.
2) 애니메이션 클립 추가
- Inspector 창에서 Add Motion Field를 눌러 애니메이션 클립을 추가합니다.
- 예: Idle, Walk, Run.
- 각 클립에 Speed 값을 설정하여 자연스럽게 전환되도록 합니다.
7. 테스트 및 디버깅
1) Play 모드에서 테스트
- 캐릭터를 이동시키고 애니메이션이 의도한 대로 작동하는지 확인합니다.
2) 디버깅 팁
- Animator 창에서 현재 상태를 확인하며 동작을 디버깅할 수 있습니다.
- Animator 파라미터 값이 제대로 설정되는지 Debug Mode를 활용해 확인합니다.
8. 고급 기능
1) 루트 모션 사용
- 애니메이션 자체의 이동 값을 활용하려면 Animator의 Apply Root Motion 옵션을 활성화합니다.
2) 애니메이션 이벤트
- 특정 프레임에서 함수를 호출하려면 Animation Clip의 이벤트(Event) 기능을 사용합니다.
3) 레이어 및 마스크
- 여러 애니메이션 레이어를 설정하고 특정 부분(예: 상체)만 애니메이션을 적용할 수 있습니다.
9. 요약
Unity에서 캐릭터에 애니메이션을 적용하는 방법은 다음과 같습니다:
- 애니메이션 클립 임포트.
- Animator Controller 생성 및 상태 설정.
- 상태 전환 및 조건 설정.
- 스크립트를 활용한 동적 제어.
- Blend Tree를 통해 부드러운 애니메이션 전환.
'Unity' 카테고리의 다른 글
Unity UI 기초: 버튼, 텍스트, 이미지 (1) | 2024.12.16 |
---|---|
Unity 애니메이션 이벤트 (0) | 2024.12.15 |
Unity Animator 컨트롤러 및 애니메이션 트리 (0) | 2024.12.15 |
Unity 카메라 이동 및 시점 변경 (1인칭, 3인칭) (1) | 2024.12.14 |
Unity 3D 캐릭터 컨트롤러 구현 (0) | 2024.12.12 |