MRが楽しい

MRやVRについて学習したことを書き残す

キャラクターの速度に合わせてアニメーションの速度を変化させる その2(アクションの切り替え)

本日は Unity の小ネタ枠です。
キャラクターの速度に合わせてアニメーションの速度を変化させる方法を記事にします。
f:id:bluebirdofoz:20220405231532j:plain

今回は前回の再生速度に加えてベースのアクションそのものを変化させてみます。

前提条件

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

アクションの追加

停止状態では待機アクション、早く動くときは走りアクションへ切り替えるため、アクションコントローラにそれぞれのアクションを追加します。
f:id:bluebirdofoz:20220405231548j:plain

アクションの遷移条件を設定するため、歩きアクションのステートを右クリックして[Make Transition]を選択します。
f:id:bluebirdofoz:20220405231558j:plain

アクションの遷移条件

前回の[WalkSpeed]パラメータを再利用して以下の条件でアクションを遷移するように設定しました。
float パラメータには[Greater(より大きい)]、[Less(より少ない)]の条件を指定できます。なお[Greater][Less]共に値が等価の場合は条件にあてはまらないと判定されます。

歩きアクション⇔待機アクション

WalkSpeed が 0.1 より少ない(Less)とき待機アクションに遷移する
WalkSpeed が 0.2 より大きい(Greater)とき歩きアクションに遷移する
f:id:bluebirdofoz:20220405231607j:plain

歩きアクション⇔走りアクション

WalkSpeed が 2.0 より大きい(Greater)とき走りアクションに遷移する
WalkSpeed が 1.9 より少ない(Less)とき歩きアクションに遷移する
f:id:bluebirdofoz:20220405231616j:plain

走りアクションは歩きアクションと同様に[WalkSpeed]の値に合わせて再生速度を調整するように設定しておきます。
f:id:bluebirdofoz:20220405231626j:plain

Tips

前回のサンプルスクリプトを利用している場合、Speed 変数に係数を掛けて WalkSpeed を作成している点に注意が必要です。

動作確認

シーンを再生して動作を確認します。
キャラクターが静止しているとき(WalkSpeed = 0)のときは待機アクションが再生されます。
f:id:bluebirdofoz:20220405231635j:plain

キャラクターの速度を上げると(WalkSpeed > 2)走りアクションが再生されます。
f:id:bluebirdofoz:20220405231644j:plain