ときどきアニメーションは“不動” となっているものがあり、つまりシーンにおいたときに、アニメーションつきキャラクターが動かないことがあります。言い換えると、アニメーションに “ルートモーション” がついていません。この場合、スクリプトからルートモーションを修正することができます。すべてをつなぎあわせるには、次の手順にしたがって進めます(同じ結果を得られる方法は複数あって、これはあくまでそのひとつであることに注意してください)。
最後に、モーションを制御するためには、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” にアタッチします。アニメーターコンポーネントは OnAnimatorMove があるスクリプトを検知して、 Apply Root Motion プロパティーに Handled by Script と表示されます。