UnityのAnimatorControllerの使い方
Unityの「AnimatorController」の使い方をまとめました。
1. AnimatorController
「AnimatorController」は、キャラクターやオブジェクトのアニメーションを管理するコントローラです。「AnimatorController」は、複数のアニメーションクリップを保持し、ゲーム内イベント発生時に、相互に切り替えて利用します。
たとえば、「歩き」アニメーション中にスペースキーが押されたら、「ジャンプ」アニメーションに切り替える、といったことが可能です。アニメーションが1つしかない場合でも、「AnimatorController」に使う必要があります。
2. AnimatorControllerの生成
はじめに、「AnimatorController」を生成し、アニメーション対象のオブジェクトに追加します。
(1) Projectウィンドウの「Create → Animator Controller」で「Animator Controller」を追加。
(2) 「Animator Controller」の名前を「Rotate」に変更。
(3) Hierarchyウィンドウの「Create → 3D Object → Cube」でCubeを追加。
(4) 「Add Component」で「Animator」を追加。
(5) 「Animator」の「Controller」に「Rotate」をドラッグ&ドロップ。
3. Animatorビュー
「Rotate」をダブルクリックすると、Animatorビューが開きます。初期状態では、「Any State」「Entry」「Exit」の3つのStateがあります。
・ Entry : アニメーションの遷移を開始するState。
・ Any State : どの状態からでも遷移できるState。
・ Exit : 最上位のステートマシンでは最初のEntryに戻り、サブステートマシンは上位のステートマシンに処理を戻すState。
3. Animationの生成
次に、「Animation」を生成し、アニメーション対象のオブジェクトと関連付けを行います。
(1) Projectウィンドウの「Create → Animation」で「Animation」を追加。
(2) 「Animation」の名前を「RotateY」に変更。
(3) Animatorウィンドウに「RotateX」をドラッグ&ドロップ。
「RotateY」とCubeの関連付けが行われ、Animatorビューに「RotateY」の「State」が追加されています。
4. Animationの設定
RotateYにCubeをY軸回転する設定を行います。
(1) メニュー「Window → Animation → Animation」でAnimationビューを開く。
(2) HierarchyウィンドウでCubeを選択し、Animatorビューの左上のドロップボックスで「RotateY」を選択。
(3) Animationビューの「Add Property → Transform → Rotationの+」でアニメーションプロパティを追加。
(4) Rotation.yの1:00のキーフレームの数値を360に変更。
(5) Playボタンで再生。
CubeがY軸回転する様子を見ることができます。
5. Animationの追加
Y軸回転の他にX軸回転のアニメーションも追加します。
(1) 「3. Animationの生成」「4. Animationの設定」と同様の方法で、X軸回転のアニメーション「RotateX」を生成。
(2) Animatorビューを開く。
Animatorビューに「RotateX」の「State」も追加されています。
(3) RotateXを右クリックし、「Make Transition」を選択し、接続先となる「RotateX」を選択。
「State」はアニメーションを格納し様々な設定を行うノードで、「Transition」は「State」同士を繋いでアニメーションの順番を制御するコネクタになります。
(4) Playボタンで再生。
CubeがY軸回転した後、X軸回転する様子を見ることができます。
【注】Transitionを削除するには、Transitionを選択して、InspectorのTransitionの「-」をクリックします。
【注】Entryを変更するには、変更先のStateを右クリックし、「Set as Layr Default State」を選択します。
6. アニメーションパラメータ
「アニメーションパラメータ」は、「Animator Controller」で定義し、スクリプトからアクセスできる変数です。スクリプトからのアニメーション制御に利用します。
以下の 4 つのパラメータがあります。
・Int : 整数
・Float : 小数
・Bool : bool値
・Trigger : bool値(遷移後戻る)
パラメータは「Animator」の以下のメソッドによって値を割り当てることができます。
・SetFloat()
・SetInt()
・SetBool()
・SetTrigger()
・ResetTrigger()
7. スクリプトによるAnimationの制御
スクリプトを使って、スペースキーを押すたびに回転方向を変更するようにしてみます。
(1) Animatorビューの左上のParametersの「+ → Trigger」でパラメータを追加し、名前を「Space」と指定。
(2) RotateY→RotateXのTransitionを選択し、InspectorウィンドウのConditionsに「Space」を追加。
(3) RotateX→RotateYのTransitionを追加し、InspectorウィンドウのConditionsに「Space」を追加。
(4) Cubeにスクリプト「Cube」を追加。
using UnityEngine;
using System.Collections;
// CubeのAnimatorの制御
public class Cube : MonoBehaviour {
Animator animator;
// スタート時に呼ばれる
void Start () {
this.animator = GetComponent<Animator>();
}
// フレーム毎に呼ばれる
void Update () {
if (Input.GetKeyDown("space")) {
animator.SetTrigger("Space");
}
}
}
(5) Playボタンで再生。
スペースキーでY軸回転とX軸回転を切り替える様子を見ることができます。
この記事が気に入ったらサポートをしてみませんか?