ステートマシンを使わないアニメーション再生

Unity

Unityのアニメーションといえば、アニメーションステートマシンを使って線をポチポチ引いて行ってパラメータがTrueになったら走るアニメーションを再生する~といったやり方が一般的ですが、先日AnimatorクラスのCrossFade関数を使うやり方を見かけて気になったのでやってみることにしました。

このやり方は、アニメーターにアニメーションクリップを追加する必要はあるものの、1行のコードでアニメーション再生できるので簡単です。

CrossFade

stateNameアニメーション名
normalizedTransitionDuration遷移にかける時間
layerレイヤー番号
normalizedTimeOffset遷移先の開始時間

anim.CrossFade(name, normalizedTransitionDuration, layer, normalizedTimeOffset);

最小限で書きたい場合は下記のようにします。

anim.CrossFade("Running", 0f);

めちゃくちゃ簡単に書けますね。
楽でいい感じです。

引数による比較

normalizedTransitionDuration:0
normalizedTransitionDuration:0.2

normalizedTransitionDurationが0の場合は即時にアニメーションが再生されますが、少しだけ値をあげてやればいい感じにブレンドされてますね。

normalizedTimeOffset:0
normalizedTimeOffset:0.3

こんな感じで再生開始の秒数をずらせます。

CrossFadeInFixedTime

似た関数名で、CrossFadeInFixedTime関数というものがあります。
CrossFade関数では、正規化された時間を使用してクロスフェードを作成、
CrossFadeInFixedTime関数では、秒単位を使用してクロスフェードを作成
するという違いがあります。

CrossFadeInFixedTime関数は秒数で指定できるということで、
もしかしたらこっちを使うほうが意図通りになっていいのかもしれません。

コメント

タイトルとURLをコピーしました