본문으로 바로가기

[Unity] Animator

category Game Development/Unity 2024. 2. 20. 16:27

유니티의 애니메이션 시스템인 메카님(Mecanim)은 애니메이터(Animator)를 통해 다양한 애니메이션 클립을 게임 오브젝트에 적용하고 제어할 수 있게 해줍니다.

 

[게임 오브젝트, 애니메이션 클립, 애니메이터 컨트롤러]

  • 게임 오브젝트 : 애니메이션이 적용될 대상
  • 애니메이션 클립 : 애니메이션의 실제 동작을 담고 있는 파일
  • 애니메이터 컨트롤러 : 애니메이션 클립들을 제어하고 상태를 관리하는 역할

[타임라인과 키프레임]

  • 타임라인 : 애니메이션의 각 프레임에서 어떤 값을 가지게 할지를 편집하는 영역
  • 키프레임 : 특정 시점의 애니메이션 값, Dopesheet와 Curves를 사용하여 보간 방식을 조정
    • Dopesheet: 키프레임을 추가하거나 수정하는 전통적인 방식
    • Curves: 곡선의 기울기를 설정하고, 우클릭을 통해 커브 설정을 변경할 수 있음

[상태 머신(State Machine)]

  • 상태(State)

  • 상태의 주요 옵션 

  • Motion: 상태에서 실행될 애니메이션 클립 또는 블렌드 트리
  • Speed: 애니메이션 속도 배율을 조정
  • Speed Multiplier: float 타입의 파라미터로 애니메이션 속도를 동적으로 조절
  • Motion Time: float 파라미터로 애니메이션의 진행 시간을 제어
  • Transitions: 현재 상태에서 다른 상태로의 전환 목록
  • 기본 상태(Default State): 애니메이터 컨트롤러가 활성화될 때 가장 먼저 실행되는 상태
  • 모든 상태(Any State): 조건이 충족되면 현재 상태에 상관없이 즉시 전환이 가능
    • 주의 : 쓰기엔 편리하나, 상태 관리가 힘들어질 수 있고 의도치 않은 상황에서도 전환이 발생할 수 있다.

+ 파라미터 종류 : float, int, bool, trigger

   이 중 trigger는 전환 발생 시 자동으로 초기화되는 특별한 파라미터

 

[전환(Transition)]

  • 전환 : 현재 상태에서 다른 상태로 전환되는 과정을 나타내며, 애니메이터 뷰에서 화살표로 표현됨
  • 전환의 주요 옵션:
    • Has Exit Time : 현재 상태의 애니메이션이 일정 시간 진행된 후에만 전환을 허용
    • Fixed Duration : 전환 완료 시간을 설정
    • Transition Duration : 전환 기간 동안 애니메이션을 블렌딩
    • Transition Offset : 다음 상태의 애니메이션 시작 지점을 설정
    • Solo : 해당 전환을 제외한 목록의 모든 전환을 Mute
    • Mute : 해당 전환을 Mute

[애니메이션 레이어(Animation Layer)]

  • 애니메이션 레이어 : 캐릭터의 다양한 부분을 독립적으로 제어할 수 있게 해줍니다.
  • 레이어의 주요 옵션:
    • Weight: 레이어의 애니메이션이 영향을 끼치는 가중치
    • Mask: 애니메이션이 적용될 캐릭터의 특정 부위를 설정
    • Blending: 두 가지 방식, Override는 하위 레이어의 애니메이션을 대체, Additive는 애니메이션을 추가
    • Sync: 특정 레이어와 동일한 상태 및 전환을 가지게 설정
      • Timing : 재정의된 애니메이션의 재생 시간을 제어하는 데 사용
        • Timing의 주요 기능
          • Sync된 레이어 간의 일관성 유지: Sync된 레이어가 동일한 상태 및 전환을 가지면서도, 각 레이어의 애니메이션 재생 시간을 독립적으로 조절할 수 있습니다. 예를 들어, 상체와 하체의 각각 다른 애니메이션이 동시에 시작되고 종료되도록 조정할 수 있습니다.
          • 재정의된 애니메이션 길이 설정: 레이어의 애니메이션 재생 시간을 수동으로 설정할 수 있습니다. 이는 특정 애니메이션이 너무 길거나 짧아서 다른 애니메이션과의 동기화가 필요할 때 유용합니다.
          • 정밀한 애니메이션 제어: 애니메이션의 재생 시간을 세밀하게 조정하여 보다 자연스럽고 일관된 동작을 만들 수 있습니다.
          • 주의사항 : 옵션을 잘못 설정하면, 애니메이션이 어색해지거나, 의도하지 않은 결과가 발생할 수 있습니다.
    • IK Pass: Inverse Kinematics (IK)기능을 활성화할지 여부를 설정 
      • 캐릭터의 특정 부위(예: 손, 발)가 목표 지점에 도달하도록 다른 관절(예: 팔, 다리)의 각도를 자동으로 계산하여 설정하는 기술

[아바타 마스크(Avatar Mask)]

  • 아바타 마스크 : 캐릭터의 특정 부위에만 애니메이션을 적용하고자 할 때 사용
  • 휴머노이드의 경우, 상단의 인체 모형에서 원하는 부위를 활성화/비활성화하는 것으로 마스킹 부위를 설정할 수 있음

[애니메이션 이벤트(Animation Event)]

  • 애니메이션 재생 중 특정 시점에 함수를 호출할 수 있도록 해주는 기능
  • 애니메이션과 게임 오브젝트의 상호작용을 쉽게 구현할 수 있으며, 캐릭터가 특정 동작을 할 때 게임 로직을 트리거할 수 있음
  • 애니메이션 이벤트 사용 예시 : 공격 애니메이션 중 데미지 적용, 효과음 재생, 파티클 효과
  • 주의 사항 : 자주 사용되는 애니메이션에서는 성능에 영향을 줄 수 있다

[녹화 기능(Recording Feature)]

  • 애니메이션 클립을 직접 녹화하여 생성할 수 있는 기능
  • 주의사항 : 세밀한 제어 어려움, 녹화 중 변경된 값이 자동 저장

[Loop Time 옵션]

  • 유니티에서 특정 애니메이션 클립이 반복 재생될지 여부를 설정하는 기능
  • 걷기, 달리기, 비행 등 지속적인 동작이 필요한 애니메이션에 자주 사용 (바닷물의 물결 애니메이션에도 사용)
  • 주의사항 : 전환 타이밍, 부드러운 연결 => 부자연스러울 수 있음