【Unity】Animatorの個人的な逆引きリファレンス

はじめに

Animatorに慣れていない頃の自分がアニメーションを触っていて、つまづいた点などを軽くまとめてみました。

【Animation】 ループを設定する方法

Animation ClipのInspector上からアニメーションのループの有無を設定することができます。
知らないと結構ハマるかも

image.png

【Animator】○○秒待ってからステートを再生する方法

Animatorに慣れてない頃、長さ○○秒のAnimationClipを使ってステート再生を待機させるというまわりくどい方法をとっていました。

ここでは空のステートを使ってステート再生を数秒間待機させる方法についてまとめたいと思います。

STEP1. 空のステートを用意

まず、AnimatorControllerの中にAnimiationClipが付いていない空のステートを作成し、以下のようにつなぎます。
image.png

ステート名は New Stateとしておきます.

STEP2. 数秒間待機させてからAnimation Clipが再生されるようにしてみる

image.png

New State と New Animationをつなぐ矢印を選択した状態で、以下のように設定します。

Exit Time(遷移前のステートが終了するまでの時間) = 2
Transition Duration(遷移にかかる時間) = 0
Has Exit Time のチェックは入れる

上記のように設定することで、New Stateが2秒間再生された後にNew Animation が再生されるようになります。
animation_1.gif

【Animator】ステートの遷移先が2つ以上設定されていた場合の挙動について

ステートの遷移先が2つ以上設定されていた場合、条件を先に満たしたものが優先して遷移が行われます。

例えば、片方の遷移はExit Time = 1、もう片方の遷移はExit Time = 2といった感じで設定されていた場合、Exit Time = 1の遷移が優先されます。

検証してみる

準備

以下のようにHas Exit Timeを設定しました。

Exit Time = 1の遷移
image.png

Exit Time = 2の遷移
image.png

実行

animation_5.gif

Exit Time = 1の方へ遷移していることが確認できました。

【Animator】パラメーターを使ってステート遷移を制御する

ここではステート間の遷移をパラメーターを使って制御する方法をまとめてみます。

今回はboolパラメータがtrueになるまで遷移を止めてみます。

STEP0. boolパラメータの作成

Animatorウィンドウの左側のParameterタブからboolパラメータを追加しておきます。

animation_2.gif

STEP1. 条件の追加

New State と New Animation間の遷移のHas Exit Timeのチェックを外し、Conditionへ条件を追加します。

animation_3.gif

ここでは パラメーターNew Bool = trueという条件を追加しています。
こうすることで"New Bool" が "true" の場合に限り遷移を許可する、というふるまいを定義することができます

STEP2. 挙動の確認

New Bool を trueにするとステートが New State から New Animationへ遷移することが確認できます。
animation_4.gif

【Animator】レイヤーを使ってアニメーションを混ぜる

image.png

ここではAnimatorのレイヤーについてまとめてみます。

アニメーションの準備

最初に、X軸回転アニメーションとY軸回転アニメーションを作成します

X軸回転アニメーション (RotateX.anim)
animation_6.gif

Y軸回転アニメーション (RotateX.anim)
animation_7.gif

レイヤー作成

Animatorに二つのレイヤーを作成し、片方にX軸アニメーション、もう片方にY軸回転アニメーションを追加します。

animation_8.gif

レイヤー名はそれぞれRotationX, RotationY としておきます。

レイヤーのWeight

X軸回転レイヤーのWeightが1、Y軸回転レイヤーのWeightが0の場合、X軸回転だけが適用されます。
animation_9.gif

Blending = Override の挙動

Y軸回転レイヤーのBlendingをOverrideにした状態でWeightを1に設定するとY軸回転を起こすようになります
animation_10.gif
Overrideの場合だとアニメーションが上書きされます。

Blending = Additive の挙動

Y軸回転レイヤーのBlendingをAdditiveにした状態でWeightを1に設定するとX軸回転とY軸回転が両方同時に行われるようになります。

animation_11.gif

Additiveの場合だとアニメーションが加算されます。

【番外編】エディター拡張でAnimatorの中にAnimationClipを入れる

AnimationClipをAnimatorの中に入れると、アセットをきれいに整理することができるのでオススメです。

下記ページで具体的な方法が紹介されています。

UnityのAnimatorControllerにAnimationClipを内蔵する - テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2015/02/03/232316