この記事でのバージョン
Unity 2019.4.0f1
はじめに
UnityにはBlend Treeというパラメータを元にアニメーションをブレンド(合成?)
して再生する機能があり、以前記事にもしました。
この時は前と左右の移動でアニメーションをブレンドしましたが、
今回は速度と高さのパラメータを使って
待機、立ち、歩き、走りのアニメーションをブレンドする方法です!
イメージとしては以下のような感じで、
パラメータを操作するだけで簡単にアニメーションを変更できますし、
中間の変化もいい感じに補完してくれるので、物凄く便利です……!
Raccoon Blend Tree pic.twitter.com/MQ6aVfEGGU
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年6月12日
なお、記事中では以下のアセットを使っています。
Animals - Simon the Raccoon | 3D Animals | Unity Asset Store |
Blend Tree
さっそくBlend Treeの設定方法です。
まず、Animator上で右クリックした後、
Create State/From New Blend Treeを選択するとBlend Treeが作成できます。
作成したBlend Treeをクリックすると画面が変わり、Blend Treeの設定が行えるようになるので、
Inspector上から、BlendTypeを2D Freeform Cartesianにします。
なお、BlendTypeについては以下を参照のこと。
2D Freeform Cartesian: モーションが異なる方向を表さない場合に最適です。Freeform Cartesian では X および Y パラメーターに異なる概念、例えば角速度と直線スピードなど、を表すことができます。例としては walk forward no turn (前に歩く、曲がらない)、run forward no turn (前に走る、曲がらない)、walk forward turn right (前に歩く、右に曲がる)、run forward turn right (前に走る、右に曲がる) などです。
次にAnimatorのParametersタブでHeightとSpeedをFloatで作成します。
ちなみにこのパラメータをプログラムから操作したい時はSetFloatを使います。
//パラメータHeightを0.5にする _animator.SetFloat(Animator.StringToHash("Height"), 0.5f),
作成したパラメータをBlend Treeに設定します。
なお、今回はSpeedがPosX、HeightがPosYに対応する感じです。
後はAdd Motion Fieldから対応するアニメーションをどんどん追加していくだけです。
まずは四足歩行で止まっているIdle(PosXが0、PosYも0)と
2足で立っているStand_Hind_Idle(PosXが0、PosYは1)を追加しました。
この状態で再生ボタンを押した後、Animatorの数値を操作すれば、
実際にブレンド具合を確認する事が出来ます。
次は忍び歩きのSneak、通常方向のWalk、ダッシュのSprintを追加します。
なお、PosY(Height)は全て同じにして、PosX(Speed)の値で変化するようにしています。
ブレンド具合を確認してみると以下のような感じに。
最後に二足歩行で歩いているWalkHindを追加します。
なお、二足歩行のアニメを一つしかなかったので、同じアニメを複数追加し、
一番右の再生速度で変化を与えています。
これもブレンド具合を確認してみると以下のような感じに。
これで最初の待機、歩き、走りBrend Treeの完成です。
Raccoon Blend Tree pic.twitter.com/MQ6aVfEGGU
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年6月12日