🚶

【Unity】BlendTreeで上下左右に移動するアニメーションを作成する

2021/04/25に公開

初めに

BlendTypeの1Dと2DFreeFormDirectional二種類の方法を紹介します。1Dはシンプルで簡単ですが移動速度に合わせてアニメーションの速度を変化させる事はできません。なので正面方向から真後ろに移動方向を切り替えた時、アニメーションも自然に遷移しません。

2DFreeFormDirectionalを使うと移動速度に合わせてアニメーションの速度も変化させる事が可能で自然なアニメーションになるので2Dをおすすめします。

2DFreeFormDirectionalで上下左右移動アニメーション

https://www.youtube.com/watch?v=lFYj0ayfWMM

アニメーションのパラメーター、movingXとmovingYを取得するために角度と移動速度からVector3を取得します。

1Dで上下左右移動アニメーション

https://www.youtube.com/watch?v=thYhOWnAIYY

BlendTreeはこんな感じにします。animatorのparameterはfloatでangleを作成します。

進むアニメーションが斜めがあれば45度毎に設定して、上下左右のみならば90度毎に設定します。今回の画像では右斜め(45)はと左後ろ(270)は違和感があったのでそれぞれ左右のアニメーションを割り当てておきました。なので上下左右のみなら0,90,180,270,360度の角度で割り当ててください。

2.スクリプトをプレイヤーにアタッチ

BlendTreeではAnimationEventが二回呼ばれてしまうのでその解決策

アニメーションを二つ組み合わせるのでEventが二回呼ばれるみたいです。そのため足音などEventで設定する場合は以下の条件を足します。右→左→右と交互に足音を鳴らします。移動をやめたときに両方どちらでも鳴るようにリセットします。

いやー、なかなか大変だった。けどこれで自然なアニメーション作れて満足!
記事は以上です。お疲れ様でした😌

Discussion