Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした