(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

複数のAnimationCurveの波形をブレンド(合成)して使う BlendAnimationCurve【Unity】【DOTween】


このエントリーをはてなブックマークに追加

この記事でのバージョン
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);