この記事でのバージョン
Unity 2022.3.21f1
はじめに
UnityはAnimationCurveを使うことで波形を定義し、波形に合わせた数値を取得する事が出来ます。
[SerializeField]
private AnimationCurve _animationCurve;
![]() |
このAnimationCurveの波形をブレンド(合成)して使えるBlendAnimationCurve
というものを作ったので、今回はその紹介です!
![]() |
![]() |
BlendAnimationCurve
さっそくですが複数のAnimationCurveをブレンドして使えるクラスBlendAnimationCurveのコードです。
次に使い方ですが、、まずブレンドしたい波形とその重み(割合ではなく)を設定します。
設定はInspectorからも出来ますし、
[SerializeField]
private BlendAnimationCurve _blendAnimationCurve;
![]() |
プログラムからも可能です。
//コンストラクタでAnimationCurve設定(何個でも可能、Weightは1固定) var blendAnimationCurve = new BlendAnimationCurve(animationCurve1, animationCurve2);
//AddでAnimationCurve設定(Weighは指定しないと1.0) var blendAnimationCurve = new BlendAnimationCurve(); blendAnimationCurve.Add(animationCurve1, 1.0f); blendAnimationCurve.Add(animationCurve2, 0.2f);
あとはAnimationCurveと同じようにEvaluateで値の取得が出来ます。
var value = blendAnimationCurve.Evaluate(0.5f);
ちなみにUnityで位置や大きさなどのアニメーション、
いわゆるTweenを実装するアセットとしてお馴染みのDOTweenでも使えます。
![]() |
DOTween Pro | Visual Scripting | Unity Asset Store |
//DoTweenのSetEaseでBlendAnimationCurveを使う transform.DOMove(Vector3.zero, 0.5f).SetEase(_blendAnimationCurve.EaseEvaluate);