🎮 Unity Animator 완전 정복 – 애니메이션을 컨트롤하는 가장 확실한 방법
Unity에서 캐릭터나 오브젝트에 생명을 불어넣는 가장 강력한 도구는 바로 Animator입니다.
이번 글에서는 Animator의 핵심 개념부터 설정, State 구성, Blend Tree, 그리고 스크립트를 통한 제어까지!
처음부터 끝까지 단계별로 정리해드릴게요.
🧠 Animator란?
Animator는 Unity에서 애니메이션 상태(state)를 관리하고 전환시키는 **애니메이션 상태 기계(State Machine)**입니다.
💡 쉽게 말하면:
"언제 어떤 애니메이션을 재생할지를 자동으로 조절해주는 시스템"
📦 Animator 구성 요소 요약
요소 설명
State | 하나의 애니메이션 동작 (예: Idle, Walk, Jump 등) |
Transition | 상태 간 전환 조건 |
Parameter | 전환을 제어하는 변수 (Trigger, Bool, Float, Int) |
Blend Tree | 움직임을 자연스럽게 섞는 구조 (걷기↔뛰기 등) |
Layers | 여러 애니메이션을 동시에 작동시킬 수 있는 구조 (표정 + 몸 동작 등) |
🔧 Animator 기본 사용법
1. Animator Controller 만들기
- Assets → Create → Animator Controller
- 원하는 오브젝트에 Animator 컴포넌트를 추가하고, 만든 컨트롤러를 연결
2. 애니메이션 상태 만들기
- Animator 창에서 Right Click → Create State → Empty
- 이름 짓고, Motion에 애니메이션 클립 연결
3. 상태 전환 만들기
- 상태 A → 상태 B로 오른쪽 클릭 → Make Transition
- Transition 조건으로 Parameters 사용
4. 파라미터 추가
- Animator 창 → Parameters 탭 → + 버튼
- 예: isJumping (Bool) → 점프 조건에 사용
🎨 Blend Tree 사용법 (자연스러운 전환용)
- Right Click → Create State → From New Blend Tree
- Double click → Blend Tree 창으로 이동
- 파라미터(예: Speed)로 애니메이션 간 부드러운 전환 설정
예시 설정 애니메이션
Speed = 0 | Idle |
Speed = 1 | Walk |
Speed = 2 | Run |
animator.SetFloat("Speed", 1.5f);
🧩 Animator Layers로 복합 제어하기
- 여러 레이어를 두고, 몸 동작은 아래, 표정은 위 Layer처럼 구성 가능
- Layer마다 Weight 설정 가능 (0.0 ~ 1.0)
- 예시:
int index = animator.GetLayerIndex("FaceLayer");
animator.SetLayerWeight(index, 1.0f);
🧪 스크립트에서 Animator 제어하기
Animator animator = GetComponent<Animator>();
// 파라미터 값 제어
animator.SetBool("isJumping", true);
animator.SetTrigger("attack");
animator.SetFloat("Speed", 1.0f);
Transition 조건으로 등록해둔 파라미터를 변경하면 상태 전환이 일어납니다.
⚠ Animator 실전 팁
- ✔ 애니메이션 간 불필요한 딜레이를 줄이려면 Exit Time 체크 해제
- ✔ Transition에는 Has Exit Time, Fixed Duration, Interruption 조건 확인
- ✔ Root Motion이 필요 없는 경우 Apply Root Motion 꺼두기
✅ 마무리 요약
기능 요약 설명
State | 애니메이션 단위 |
Parameters | 상태 전환 조건을 만드는 변수 |
Transition | 상태 간 애니메이션 전환 |
Blend Tree | 움직임을 부드럽게 연결 |
Layers | 복수의 애니메이션을 동시에 적용 가능 |