Unity

[Unity] Animator Component의 Root Motion 이란?

CommitGuy 2024. 7. 10. 09:00

Root Motion이란?

Unity Animator의 Apply Root Motion 설정

유니티에서 Animator를 사용할때 'Apply Root Motion' 이라는 값이 있다.

이 Root Motion이란 게임오브젝트의 위치와 회전을 Animation이 제어할 수 있도록 허용하는 것이다.

예를 들어 Root Motion이 적용된 걷는 애니메이션은 캐릭터가 걷는 것에 따라 위치 값도 변하게 된다.(Animation이 게임오브젝트의 위치와 회전을 제어하기 때문) 반대로 Root Motion이 적용되지 않은 걷는 애니메이션은 캐릭터가 제자리 걸음을 하게 될것이다.

 

Root Motion이 적용된 Animation의 경우 Script 코드를 작성하여 움직임을 구현하는거 보다 더 자연스럽게 움직임을 구현할 것이다(전문 모델러 혹은 디자이너 분이 만들어 주실테니...) 시네마틱 영상 같은 것을 제작할땐 그러므로 Root Motion을 적용하여 더 자연스러운 움직임의 Animation을 적용할 수 있다.

문제점

게임 개발은 영화와 같이 고정된 움직임을 쓰는것이 아닌 플레이어가 캐릭터를 제어하고자 하기 때문에 Script코드로 움직임을 제어할수 밖에 없다. 이때 Root Motion이 적용된 경우 Script를 통해 움직임을 제어하는 부분과 Animation을 통해 움직임을 제어하는 부분이 충돌하여 이상해질수 있다

 

스크립트를 통한 움직임과 Animation을 통한 움직임의 충돌

 

Root Motion이 적용된 애니메이션의 게임오브젝트를 스크립트로 제어하는 방법

MonoBehaviour에는 OnAnimatorMove 라고 하는 함수가 있다.

OnAnimatorMove

 

root motion을 수정하기 위한 Animation의 움직임을 처리해주는 콜백이다.

 

이 콜백 안에 게임 오브젝트의 움직임을 제어하는 코드를 넣고 실행시키게 되면 게임 오브젝트의 움직임 제어를 스크립트가 온전히 하게 된다.

OnAnimatorMove 사용시 Apply Root Motion에 Handled by Script로 뜨게 됨

 

Animator의 Apply Root Motion에 보면 Script에 의해 핸들링 된다라고 뜨고 온전히 Script로 제어가 넘어간것을 확인할 수 있다.

'Unity' 카테고리의 다른 글

Custom Unity Package를 UPM으로 배포하는 방법  (0) 2024.07.16
[Unity] PostProcessing  (0) 2024.07.11
Unity 3D Object Drag & Drop  (0) 2024.06.04
Unity Design Pattern - Object Pool  (2) 2024.06.03
유니티 3D Model 파괴 효과 만들기  (0) 2024.02.26