見出し画像

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」をドラッグ&ドロップ。

画像2

3. Animatorビュー

「Rotate」をダブルクリックすると、Animatorビューが開きます。初期状態では、「Any State」「Entry」「Exit」の3つのStateがあります。

Entry : アニメーションの遷移を開始するState。
Any State : どの状態からでも遷移できるState。
Exit : 最上位のステートマシンでは最初のEntryに戻り、サブステートマシンは上位のステートマシンに処理を戻すState。

画像1

3. Animationの生成

次に、「Animation」を生成し、アニメーション対象のオブジェクトと関連付けを行います。

(1) Projectウィンドウの「Create → Animation」で「Animation」を追加。
(2) 「Animation」の名前を「RotateY」に変更。
(3) Animatorウィンドウに「RotateX」をドラッグ&ドロップ。

「RotateY」とCubeの関連付けが行われ、Animatorビューに「RotateY」の「State」が追加されています。

画像3

4. Animationの設定

RotateYにCubeをY軸回転する設定を行います。

(1) メニュー「Window → Animation → Animation」でAnimationビューを開く。
(2) HierarchyウィンドウでCubeを選択し、Animatorビューの左上のドロップボックスで「RotateY」を選択。
(3) Animationビューの「Add Property → Transform → Rotationの+」でアニメーションプロパティを追加。

画像4

(4) Rotation.yの1:00のキーフレームの数値を360に変更。

画像5

(5) Playボタンで再生。

CubeがY軸回転する様子を見ることができます。

画像6

5. Animationの追加

Y軸回転の他にX軸回転のアニメーションも追加します。

(1) 「3. Animationの生成」「4. Animationの設定」と同様の方法で、X軸回転のアニメーション「RotateX」を生成。

画像7

(2) Animatorビューを開く。
Animatorビューに「RotateX」の「State」も追加されています。
(3) RotateXを右クリックし、「Make Transition」を選択し、接続先となる「RotateX」を選択。
「State」はアニメーションを格納し様々な設定を行うノードで、「Transition」は「State」同士を繋いでアニメーションの順番を制御するコネクタになります。
(4) Playボタンで再生。

CubeがY軸回転した後、X軸回転する様子を見ることができます。

画像8

【注】Transitionを削除するには、Transitionを選択して、InspectorのTransitionの「-」をクリックします。
【注】Entryを変更するには、変更先のStateを右クリックし、「Set as Layr Default State」を選択します。

6. アニメーションパラメータ

「アニメーションパラメータ」は、「Animator Controller」で定義し、スクリプトからアクセスできる変数です。スクリプトからのアニメーション制御に利用します。

以下の 4 つのパラメータがあります。

・Int : 整数
・Float : 小数
・Bool : bool値
・Trigger : bool値(遷移後戻る)

画像9

パラメータは「Animator」の以下のメソッドによって値を割り当てることができます。

・SetFloat()
・SetInt()
・SetBool()
・SetTrigger()
・ResetTrigger()

7. スクリプトによるAnimationの制御

スクリプトを使って、スペースキーを押すたびに回転方向を変更するようにしてみます。

(1) Animatorビューの左上のParametersの「+ → Trigger」でパラメータを追加し、名前を「Space」と指定。

画像10

(2) RotateY→RotateXのTransitionを選択し、InspectorウィンドウのConditionsに「Space」を追加。

画像11

(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軸回転を切り替える様子を見ることができます。


この記事が気に入ったらサポートをしてみませんか?