가끔 애니메이션이 “고정” 상태인 경우가 있는데, 이는 애니메이션을 씬에 넣더라도 부착된 캐릭터가 이동하지 않는다는 의미입니다. 즉 애니메이션이 “루트 모션”을 포함하지 않습니다. 이렇게 하려면 스크립트에서 루트 모션을 수정하면 됩니다. 아래에 설명된 단계를 수행하면 됩니다. 다만, 아래에서 설명된 방법 외에도 다른 방법으로도 같은 결과를 얻을 수 있습니다.
마지막으로, 모션을 제어하려면 OnAnimatorMove를 구현하는 RootMotionScript.cs 스크립트를 생성해야 합니다.
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class RootMotionScript : MonoBehaviour {
void OnAnimatorMove()
{
Animator animator = GetComponent<Animator>();
if (animator)
{
Vector3 newPosition = transform.position;
newPosition.z += animator.GetFloat("Runspeed") * Time.deltaTime;
transform.position = newPosition;
}
}
}
RootMotionScript.cs를 “Dude” 오브젝트에 연결해야 합니다. 이제 Animator 컴포넌트는 OnAnimatorMove 함수가 있는 스크립트를 감지하여 Apply Root Motion 프로퍼티를 Handled by Script 로 표시합니다.