[Unity] Animation System

자몽이·2026년 1월 19일

Unity

목록 보기
4/6
post-thumbnail

Unity Animation에 대한 정리이다.

Unity에서 움직임은 전부 Animation으로 표현된다.
막상 애니메이션을 쓰다 보면 각 요소들이 어떤 역할을 가지고 어떻게 수행되는지 제대로 이해하지 못했다.


처음에는 되게만 하자. 라는 마인드로 썼다가,
프로젝트가 커지고 행동들이 많아질 수록 상태가 꼬이고, 파라미터가 지옥이 되는 걸 경험했다.


그래서 이번에 Unity 애니메이션 시스템이 어떤 구조로 설계되어 있고, 각 요소가 어떤 역할을 하는지를 정리해본다.




✅ Unity Animaion 시스템이 해주는 역할

Unity의 애니메이션 시스템은 크게 두 가지를 해준다.


1. 움직임 데이터를 재생 한다.

  • 팔, 다리, 몸통이 어느 시점에 어떤 각도로 움직일지

2. 언제 어떤 움직임을 재생할지 결정한다.

  • Idle -> 움직이지 않기

  • 이동중이면 Move


이 두 역할을 나누기 위해 Unity는 구조를 이렇게 잘라놓았다.

  • Animator Component -> 실제 GameObject에 붙어서 애니메이션 재생을 실행하는 컴포넌트
  • Animaion Clip -> 움직임 데이터 그 자체
  • Animator Controller -> 어떤 상황에서 어떤 클립을 재생할지 결정하는 상태머신



1. Animator Component

Animator Controller는 실제로 GameObject에 붙는 컴포넌트다.

  • 어떤 Animator Controller를 사용할지 설정
  • 어떤 Avatar(본 구조)를 쓸지 설정 (3D 캐릭터의 경우)
  • Root Motion을 사용할지 여부 (애니메이션 클립 반복)
  • Update Mode, Culling Mode 등 재생 관련 옵션

Script에서 GetComponent()로 가져오는 것이 바로 이 Animator 컴포넌트다.




2. Animation Clip

Animation Clip은 시간에 따른 값 변화를 담고 있는 데이터다.
특정 시간에 Transform, bone, 회전 값, 머터리얼 색상 등
이런 것들을 Curve로 저장해 놓은것이다.


Clip 자체는 나는 얼마 동안 이렇게 움직이는 데이터야 라고 말할 뿐이다.
언제 재생할지, 언제 멈출지, 상태변환에 대한 조건은 모른다.




3. Animator Controller

Animator Controller는 여러 Animation Clip을 모아서
지금은 어떤 클립을 재생해야 하는지를 결정하는 상태머신 이다.


Idle 상태 -> Idle 클립 재생
Run 상태 -> Run 클립 재생

이 사이를 Transition이란 화살표 모양으로 이어서 어떤 조건으로 넘어갈지 정의 한다.

일반적인 코드에서는 AnimatorController를 직접 만지기 보다
Animator Component의 파라미터를 세팅하는 방식으로 애니메이션을 제어한다.
Animator는 내부적으로 지정된 AnimatorController를 참조해서
상태 전환과 클립 재생할지를 결정한다.
필요하다면 코드에서 런타임중에 AnimatorController를 교체하는것도 가능하다.

profile
개발자가 되는 그 날 까지

0개의 댓글