(:3[kanのメモ帳]

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

(:3[kanのメモ帳]



速度と高さのパラメータを使って待機、立ち、歩き、走りのアニメーションを中間の変化も併せて実装する【Unity】【Blend Tree】


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


この記事でのバージョン
Unity 2019.4.0f1


はじめに

UnityにはBlend Treeというパラメータを元にアニメーションをブレンド(合成?)

して再生する機能があり、以前記事にもしました。

f:id:kan_kikuchi:20160729134706g:plain


この時は前と左右の移動でアニメーションをブレンドしましたが、

今回は速度と高さのパラメータを使って

待機、立ち、歩き、走りのアニメーションをブレンドする方法です!


イメージとしては以下のような感じで、

パラメータを操作するだけで簡単にアニメーションを変更できますし、

中間の変化もいい感じに補完してくれるので、物凄く便利です……!



なお、記事中では以下のアセットを使っています。

Animals - Simon the Raccoon | 3D Animals | Unity Asset Store



Blend Tree

さっそくBlend Treeの設定方法です。


まず、Animator上で右クリックした後、

Create State/From New Blend Treeを選択するとBlend Treeが作成できます。

f:id:kan_kikuchi:20200613064354j:plain


作成したBlend Treeをクリックすると画面が変わり、Blend Treeの設定が行えるようになるので、

Inspector上から、BlendTypeを2D Freeform Cartesianにします。

f:id:kan_kikuchi:20200613065238j:plain


なお、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で作成します。

f:id:kan_kikuchi:20200613065424j:plain


ちなみにこのパラメータをプログラムから操作したい時はSetFloatを使います。

//パラメータHeightを0.5にする
_animator.SetFloat(Animator.StringToHash("Height"), 0.5f), 


作成したパラメータをBlend Treeに設定します。

なお、今回はSpeedがPosX、HeightがPosYに対応する感じです。

f:id:kan_kikuchi:20200613065930j:plain


後はAdd Motion Fieldから対応するアニメーションをどんどん追加していくだけです。

f:id:kan_kikuchi:20200613070924j:plain


まずは四足歩行で止まっているIdle(PosXが0、PosYも0)と

2足で立っているStand_Hind_Idle(PosXが0、PosYは1)を追加しました。

f:id:kan_kikuchi:20200614074828g:plain


この状態で再生ボタンを押した後、Animatorの数値を操作すれば、

f:id:kan_kikuchi:20200613070737j:plain


実際にブレンド具合を確認する事が出来ます。

f:id:kan_kikuchi:20200613070751g:plain


次は忍び歩きのSneak、通常方向のWalk、ダッシュのSprintを追加します。

f:id:kan_kikuchi:20200613071606j:plain


なお、PosY(Height)は全て同じにして、PosX(Speed)の値で変化するようにしています。

f:id:kan_kikuchi:20200614075007g:plain


ブレンド具合を確認してみると以下のような感じに。

f:id:kan_kikuchi:20200613072009g:plain


最後に二足歩行で歩いているWalkHindを追加します。

なお、二足歩行のアニメを一つしかなかったので、同じアニメを複数追加し、

一番右の再生速度で変化を与えています。

f:id:kan_kikuchi:20200613072041j:plain


これもブレンド具合を確認してみると以下のような感じに。

f:id:kan_kikuchi:20200613072549g:plain


これで最初の待機、歩き、走りBrend Treeの完成です。