내일배움캠프 56일차 TIL : Root Motion

woollim·2024년 12월 11일
0

내일배움캠프TIL

목록 보기
49/65
post-thumbnail

■ 개요

○ 오늘 계획

  • enemy 상속구조 만들기
    • Enemy 부모 클래스
      • MeleeEnemy 자식클래스
      • RangedEnemy 자식클래스
    • EnemyStateMachine 부모 클래스
      • MeleeEnemyStateMachine 자식클래스
      • RangedEnemyStateMachine 자식클래스
  • MeleeEnemy 애니메이터 수정
  • MeleeEnemy 스테이트 전환 로직 수정


■ 트러블슈팅

  • 문제: 모든 enemy 들이 똑같이 움직인다
  • 발단: 애니메이션의 동작 그대로 움직임을 적용시키기 위해 Apply Root Motion을 켰다.
  • 원인: Apply Root Motion이 체크되면 동일한 Animator Controller를 여러 몬스터가 공유하면 Root Motion 데이터도 공유되어 똑같이 움직인다. 자세한것은 아래서 기술한다.
  • 해결방안: 각 몬스터가 고유한 Animator Controller를 사용하도록 설정 하면된다. 혹은 Animator Controller를 복사하여 각 몬스터에 별도로 배치한다.
  • 결과: 핵슬 게임에서 수십마리가 넘는 에너미들의 애니메이터를 개별로 만들 수는 없다. Apply Root Motion을 체크해제되고 되도록 제자리에 발붙이고 있는 애니메이션을 사용하기로 했다.
    다른 방법이 있을지 추가적으로 찾아볼 예정이다.


■ Apply Root Motion

○ 개념

  • Apply Root Motion은 Unity에서 Animator Component의 옵션 중 하나
  • 애니메이션의 Root Transform 데이터(위치와 회전)를 게임 오브젝트에 적용할지를 제어하는 설정

○ Root Motion이란?

  • Root Motion은 애니메이션 파일에 포함된 루트 트랜스폼의 움직임 데이터를 의미함
  • 이 데이터를 사용하면 캐릭터의 움직임이 애니메이션에 포함된 대로 자연스럽게 이루어짐
  • 예를 들어, 걷기 애니메이션에서 Root Motion을 활성화하면 캐릭터가 실제로 앞으로 이동함

○ Apply Root Motion 작동 방식

  • 활성화된 경우:
    • 애니메이션의 Root Transform 데이터를 게임 오브젝트의 실제 움직임으로 적용함
    • 애니메이션의 위치 및 회전 데이터가 Unity의 물리 엔진에 반영됨
    • 주로 캐릭터가 직접 움직이는 데 사용됨
  • 비활성화된 경우:
    • Root Transform 데이터가 적용되지 않음
    • 애니메이션이 재생되더라도 캐릭터의 위치나 회전은 변경되지 않음
    • 대신 캐릭터의 이동은 스크립트나 물리 엔진에 의해 제어됨

○ Root Motion의 사용 사례

  • 활성화
    • 애니메이션 데이터에 기반해 캐릭터를 이동시키고 싶을 때
    • 예: 자연스러운 이동이 중요한 싱글플레이 게임에서 캐릭터의 걷기, 뛰기 등
  • 비활성화
    • 캐릭터의 이동을 직접 제어해야 할 때
    • 예: 멀티플레이어 게임에서 네트워크 동기화를 위해 위치를 스크립트로 관리

○ Root Motion의 장단점

  • 장점
    • 애니메이션과 이동이 자연스럽게 동기화
    • 코딩 없이도 이동과 회전을 제어 가능
  • 단점
    • 애니메이션 데이터에 전적으로 의존하므로 세밀한 이동 제어가 어렵습니다
    • 멀티플레이 환경에서는 위치 동기화 문제가 발생할 수 있음

○ 주의할 점

  • Animator Controller
    Root Motion을 제대로 활용하려면 올바른 Animator Controller와 애니메이션 클립이 필요함

  • 계층 구조
    Root Motion은 캐릭터의 Root Transform 기준으로 적용되므로 계층 구조가 적절히 설정되어야 함

  • 환경 의존성
    애니메이션의 루트 경로가 캐릭터 환경에 적합한지 확인해야 자연스러운 움직임이 가능함

0개의 댓글