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

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

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

まずはAnimatorControllerを作成します。
ProjectsタブのAssetsエリアで右クリック→Create→AnimatorControllerを選択します。

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

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

アニメーターコントローラのパラメータとしてAttackをTriggerで用意しておきます。
アニメーションパラメータはAnimatorのParametersを押し、+を押して新しいパラメータAttackを追加します。

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

上の画像ではAnyState→Attackとなっていますが、Idle→Attackです。
Has Exit Timeのチェックは外しておきます。

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

Attack→Idleの時はHas Exit Timeにチェックを入れ、条件の指定は何もしません。
こうすることでアニメーションが終わったらIdleに遷移します。

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

スポンサーリンク

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

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

アニメーションの遷移を確認するだけなので、最小のスクリプトの記述だけです。
Fire1に設定されているマウスの左クリックを押すとAttackのアニメーションに遷移します。

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

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

Unityで敵キャラが主人公に近づいた時に攻撃をしてくる機能
Unityで主人公が敵に近づいた時に敵が主人公を攻撃してくる機能を作成します

を参照してください。

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

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

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

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

上がさきほどのアニメーションブレンドの場合のIdle→Attackのアニメーションです。
ほとんどすぐにAttackのアニメーションに切り替わります。

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

横向きの矢印をAttackのアニメーションの最後の方に移動させると、IdleとAttackのアニメーションがなだらかにブレンドしながらAttackのアニメーションに遷移します。

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

上が結果です。

次に、Attackのアニメーションの最初の方は再生したくない場合があるとします。
右手の攻撃の後、左手の攻撃をするが右手の攻撃の部分を省略して左手の攻撃だけ採用したい場合

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

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

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

上が結果です。あまりよくわからないですが・・・(^_^;)
Attackのアニメーションが途中からになります。

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

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

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

を参照してください。