Unityのアニメーターコントローラーのブレンドの使い方

記事内に広告が含まれています。

今回はUnityのアニメーターコントローラーの使い方をやってみます。
難しい制御はわからないのでごく基本的な事をやってみようと思います。

ではサンプルを作ってみます。

まずはAnimatorControllerを作成します。

ProjectウインドウのAssetsフォルダで右クリック→Create→AnimatorControllerを選択します。

アニメーターコントローラー1

上のようにAnimatorタブ内で右クリック→Create State→Emptyを選択し、名前を変更しIdleとAttackを作成します。

アニメーションパラメータとしてTrigger型のAttackを用意しておきます。

アニメーションパラメータはAnimatorのParametersを押し、+を押して新しいパラメータAttackを追加します。

アニメーターコントローラー2

上の画像ではAnyState→Attackとなっていますが、Idle→Attackです。

Has Exit Timeのチェックは外し、Conditionsの+を押してAttackを条件にしておきます。

Has Exit Timeのチェックがされていない時は他のConditionsの条件が成立するとすぐさま次のアニメーションへと遷移します。

アニメーターコントローラー3

Attack→Idleの時はHas Exit Timeにチェックを入れ、条件の指定は何もしません。

こうすることでアニメーションが終わってからIdleに遷移します。

キャラクターを用意しAnimatorコンポーネントに作成したAnimatorControllerをセットします。

スポンサーリンク

アニメーションパラメータをスクリプトで変更する

次にキャラクターに追加するスクリプトTestEnemyとTestReceiveAttackを準備します。

アニメーションの遷移を確認するだけなので、最小のスクリプトの記述だけです。

デフォルトでFire1に設定されているマウスの左クリックを押すとAttackのアニメーションに遷移します。

TestReceiveAttackスクリプトはアニメーションクリップに設定したアニメーションイベントを受け取って実行するスクリプトなので
Attackに設定したアニメーションの最後にTestEndAttackというアニメーションイベントが設定されている必要があります。

アニメーションイベントに関しては

Unityのアニメーションイベントを使う
Unityのアニメーションイベントを使い、歩くアニメーションで地面に足を着いた時に足音を鳴らしたり剣を振っている途中で剣を振った時の音を鳴らしたりしたいと思います。

を参照してください。

アニメーションのブレンド

さきほどの遷移のアニメーションブレンドですが、それぞれ遷移先のアニメーションがすぐ再生されるようにしています(ブレンドする時間が短い)。

濃い青色の部分が再生されるアニメーションで、Idle→Attackの場合はIdleのアニメーションとAttackのアニメーションをブレンドしながらAttackに遷移し後はAttackのアニメーションのみ再生されます。

アニメーターコントローラー4

上がさきほどのアニメーションブレンドの場合のIdle→Attackのアニメーションです。

ほとんどすぐにAttackのアニメーションに切り替わります。

アニメーションブレンドの最後の横向きの矢印をAttackのアニメーションの最後の方に移動させると、

アニメーターコントローラー5

IdleとAttackのアニメーションを滑らかにブレンドしながらAttackのアニメーションに遷移します。

アニメーターコントローラー6

上が結果です。

次に、Attackのアニメーションの最初の方は再生したくない場合があるとします。

右手の攻撃の後、左手の攻撃をするが右手の攻撃の部分を省略して左手の攻撃だけ採用したい場合

アニメーターコントローラー7

上のようにAttackを左にドラッグ&ドロップして移動させます。今回は50%移動しました。

アニメーターコントローラー8

上が結果です。あまりよくわからないですが・・・(^_^;)

濃い青の部分がブレンドする部分なのでAttackを左にスライドさせて最初のアニメーションの部分をカットし、ブレンドの最後も左に寄せて直ぐにAttackアニメーションへと遷移させるようにするとさらに良くなりそうです。

AnimatorControllerのブレンドを少なくする

AnimatorControllerのブレンドを短くしたサンプル

Attackのアニメーションの最初をカットしつつIdleとAttackのブレンド時間が短いのですぐにAttackのアニメーションへと遷移します。

アニメーションのブレンドや割り込みについては

UnityのAnimatorControllerのアニメーションのブレンドと割り込み
UnityのAnimatorControllerのアニメーションのブレンド方法や遷移の設定、Interruption Sourceの設定等を見ていきます。アニメーションの遷移途中で中断し次の状態へとうまく移行させる為のサンプルも作成します。

も参照してみてください。

これでアニメーターコントローラーが少し使えるようになりました。

実際はStateの中でも角度やスピードでアニメーションを切り替えたり(サブステート)、遷移の条件をいろいろ指定して複雑化していきますが、まずは出来る事をやってみました。

サブステートマシンに関しては

アニメーターコントローラのサブステートマシンを使ってみる
Unityのアニメーターコントローラーのサブステートマシンを使ってアニメーターの状態と遷移をわかりやすくしていきます

を参照してください。

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