Unity

Unity 애니메이션에 대하여

anvil925 2025. 4. 14. 22:15
728x90
반응형

Unity 애니메이션에 대하여

Unity에서 애니메이션 시스템은 단순한 트랜지션 이상의 역할을 하며, 게임의 감성과 퀄리티를 좌우하는 핵심 요소입니다. 이번 글에서는 Unity의 애니메이션 시스템 전반과 Animator Controller, 그리고 실전 팁과 함께 Timeline과 Playables API까지 소개하겠습니다.

1. Unity 애니메이션 시스템 개요

Unity의 애니메이션 시스템은 크게 다음 세 가지 구성 요소로 이루어져 있습니다:

  • Animator Component: 애니메이션을 실행하는 본체로, GameObject에 붙습니다.
  • Animator Controller: 상태(State)와 전이(Transition)를 정의하고 애니메이션 클립을 연결하는 그래프 구조입니다.
  • Animation Clip: 실제 애니메이션 동작을 담은 데이터 파일입니다.

이외에도 Avatar, Rigging, Root Motion 등 다양한 하위 시스템이 포함되어 있습니다.

2. Animator Controller의 구성과 원리

Animator Controller는 상태(State) 간의 전이(Transition)를 기반으로 애니메이션 흐름을 구성합니다. 주요 구성 요소는 다음과 같습니다:

  • State: Idle, Run, Jump 등의 상태. 각각 Animation Clip을 재생합니다.
  • Transition: 상태 간 전이 조건. 매개변수(Parameter)에 따라 조건부로 전환됩니다.
  • Blend Tree: 여러 애니메이션을 부드럽게 혼합하기 위한 구조. 주로 이동 애니메이션에 사용됩니다.

3. 흔히 하는 실수

  1. Bool 파라미터 남발
    • 조건 충돌이 많아지며 디버깅이 어려워집니다. 트리거(Trigger)나 Int 값을 조합해 단순화하는 것이 좋습니다.
  2. Transition Exit Time을 무시
    • Exit Time이 활성화되어 있는 경우, 조건을 만족해도 애니메이션이 끝날 때까지 전환되지 않습니다. Exit Time 설정을 항상 검토해야 합니다.
  3. FixedUpdate에서 SetTrigger 사용
    • Animator는 일반적으로 Update 기준으로 작동하므로, FixedUpdate에서 SetTrigger를 호출하면 타이밍 문제로 이벤트가 누락되는 경우가 있습니다.

4. 실전 팁

  • Animation Layer 활용: 예를 들어 상체와 하체를 분리해서 애니메이션 처리 가능. 무기 조준, 재장전 등을 독립적으로 처리할 수 있음.
  • Animator Override Controller: 같은 Animator Controller를 여러 캐릭터에 재사용하면서 일부 클립만 교체할 수 있어 효율적.
  • Root Motion 사용 여부: 이동량을 애니메이션에서 처리할지 코드에서 처리할지 결정해야 합니다.

5. Timeline과 Playables 소개

Timeline

Timeline은 시네마틱 연출이나 복잡한 애니메이션 시퀀스를 제작할 때 사용됩니다.

  • 트랙 기반으로 여러 애니메이션 클립, 오디오, 이벤트 등을 조합할 수 있습니다.
  • PlayableDirector를 통해 실행되며, 컷신 제작에 최적화되어 있습니다.
  • Signal 시스템을 통해 Timeline 도중 특정 지점에 코드 이벤트를 트리거할 수 있습니다.

Playables API

Playables는 Animator Controller를 사용하지 않고 코드 기반으로 애니메이션을 컨트롤할 수 있는 강력한 시스템입니다.

  • AnimationPlayableOutput, AnimationClipPlayable, AnimationMixerPlayable 등을 조합하여 동적으로 애니메이션을 구성할 수 있습니다.
  • Timeline은 Playables를 기반으로 만들어진 API입니다.
  • 예를 들어 두 애니메이션을 실시간으로 블렌딩하는 것도 가능합니다.
// 예시: 코드 기반으로 AnimationClip 실행
var playableGraph = PlayableGraph.Create();
var playableOutput = AnimationPlayableOutput.Create(playableGraph, "Anim", animator);
var clipPlayable = AnimationClipPlayable.Create(playableGraph, myClip);
playableOutput.SetSourcePlayable(clipPlayable);
playableGraph.Play();

 

Unity의 애니메이션 시스템은 단순히 상태 전환을 넘어서, 다양한 방식으로 캐릭터의 행동을 자연스럽게 연출할 수 있는 강력한 도구입니다. Animator Controller를 기본으로, 필요에 따라 Timeline이나 Playables를 함께 활용한다면 더욱 유연하고 확장성 있는 애니메이션 시스템을 구축이 가능

728x90
반응형