アニメーションが “定位置” にいる場合があります。つまり、シーンに配置したときにアニメーションを付けたキャラクターが動きません。これはアニメーションに “ルートモーション” がついていないということです。この場合、スクリプトからルートモーションを修正できます。修正するには、以下の手順に従ってください (一例であり同じ結果を得る方法は複数あります)。
最後に、モーションを制御するためには、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 と表示されます。