アニメーターコントローラー(Animator Controller)の使い方

ここではアニメーターコントローラー(Animator Controller)の使い方について説明します。


※この記事で使用しているUnityのバージョン:Unity2019.1

アニメーターコントローラー(Animator Controller)とは?

アニメーターコントローラーの例

アニメーターコントローラーの例

アニメーターコントローラーは、アニメーションクリップ同士を繋いで、その遷移を制御する仕組みです。ここでは各アニメーションを1つの「状態(ステート)」として管理し、条件を満たすと別の状態に遷移するというような形でアニメーションを変化させていきます。

アニメーターコントローラーはプロジェクトビューの何もないところで右クリック→「作成」→「アニメーターコントローラー」から作ることができます。

アニメーターウィンドウについて

アニメーターウィンドウの説明

それでアニメーターコントローラーはアニメーターウィンドウ(メニューバー→「ウィンドウ」→「アニメーション」→「アニメーター」で表示)から編集することができます。

アニメーターウィンドウの左半分はパラメーター欄、右半分は状態遷移の編集画面になっています。状態遷移の画面はマウスホイールをスクロールすると拡大縮小・ホイールクリックしたままドラッグすると画面内を移動できるので覚えておきましょう。

特殊なノードについて

さて、新しくアニメーターコントローラーを作り、それをアニメーターウィンドウで見てみると下の図のように「Any State」と「Entry」、そして「Exit」(これは画面外の右の方にあると思います)の3つのノードが用意された状態になっています。

初期状態のアニメーターコントローラーの内容

この3つのノードは特殊なノードで、次のような役割を持っています。

  • Entry:
    アニメーターコントローラーの始まりを表すノード
  • Any State:
    どんな状態からでも遷移できるノード
  • Exit:
    アニメーターコントローラーの終わりを表すノード

このうちAny Stateはちょっと分かりづらいと思いますが、例えば「今の状態がどんなモーションかにかかわらず、ボタンを押したら攻撃モーションにしたい」といった場合に便利です(※もしAny Stateがなかったら、全ステートから攻撃ステートに遷移を作成しないといけなくなってとても面倒くさい)。

ステートの作り方

では、ここからアニメーターコントローラーの編集方法について説明していきます。

まずはステートの作り方についてですが、新しいステートは右クリック→「ステートの作成」→「空」を選択することで簡単に作ることができます。

新しいステートの作成

初期状態から初めてステートを作ると、自動的にEntryノードから遷移が作成され、ステートがオレンジ色になります。これはこのステートが「デフォルトステート」に設定されたことを表します。

もしデフォルトステートを変更したくなった場合は、新しくデフォルトステートにしたいステートを右クリックして「レイヤーデフォルトステートに設定する」を選択してください。

ステートの遷移の作り方

次にステートの遷移の作り方についてです。ステートの遷移は、遷移元のステートを右クリックして「遷移を作成」を選び、遷移先をクリックすれば作ることができます。

状態遷移の例

遷移を表す矢印を右クリックすると、インスペクターに遷移の設定内容が表示されます。

状態遷移をインスペクターで表示したときの例

設定項目については次の通りです。

  • 終了時間あり:
    ONのとき、前のアニメーションが終わるまで遷移を待ちます。デフォルトではONですが、遷移が不自然になりやすいのでOFFにすることが多いです。
  • Conditions:
    ここに後述するパラメーターを使って遷移の条件を設定します。条件を満たすと遷移が行われます(←重要)。

パラメーターの作り方

では次に遷移の条件分岐に使うパラメーターの作り方を見てみましょう。新しいパラメーターを作るには、パラメーターリストの右上の「+」マークをクリックします。

パラメーターの新規作成ボタン

パラメーターには次の4つの型を指定することができます。

  1. Float
  2. Int
  3. Bool
  4. Trigger

このうちTriggerは遷移に使われた時に自動的にfalseになるBool型のことです。

作ったパラメーターは一覧に追加されます。ここで名前を変更したり、初期値を競ってしたりすることが可能です。

パラメーターの追加例

パラメーターの値の変更方法

これでアニメーターコントローラー側での設定はOKです。ただし、このままではパラメーターが変化しないので、パラメーターの値の変更をスクリプトから行う必要があります。

パラメーターの変更は次のメソッドで行うことができるので覚えておきましょう。

  1. SetFloat:Float型のパラメーターの値を変更
  2. SetInt:Int型のパラメーターの値を変更
  3. SetBool:Bool型のパラメーターの値を変更
  4. SetTrigger:TriggerをONにする