【Unity】モーションのCurveを使う

モーションに設定できるCurveの使い方です。

Curve?

FBXImporterのAnimationタブで、Curvesというものが設定できます。

f:id:halya_11:20180905194012p:plain

これはこのアニメーションとともに変化する値を設定できる機能です。
マニュアルによると、アニメーションに呼応して吐かれる吐息のエフェクトの制御などに用いられるようです。

Unity - Manual: Curves

使い方

使い方はちょっとわかりづらいのですが、FBXImporterでCurveを設定したら、
Animation ControllerにCurveと同じ名前のParameterをfloat型で定義する必要があります。

f:id:halya_11:20180905194434p:plain

するとCurveを設定したアニメーションが流れたときにCurveの値がこのパラメータに入ってきます。
あとは普通にAnimatorからParameterを取得するだけです。

using UnityEngine;

public class MotionCurve : MonoBehaviour {

    private Animator _animator;
    private int _paramHash;

    private void Awake()
    {
        _animator = GetComponent<Animator>();
        _paramHash = Animator.StringToHash("TestCurve");
    }

    private void Update()
    {
        Debug.Log(_animator.GetFloat(_paramHash));
    }
}

参考

Unity - Manual: Curves