複数の動作パーツがあるオブジェクト
アニメーターコントローラー

アニメーションイベントの使用

詳細

Animation Events を使用することでアニメーションクリップを最大限に活用することができ、タイムラインの特定のタイミングでオブジェクトのスクリプトに含まれる関数呼び出しを行うことができます。

関数はアニメーションイベントにより呼び出され、オプションとして引数をひとつ付加することができます。引数は float、string、int、オブジェクト参照、あるいは AnimationEvent オブジェクトとすることができます。AnimationEvent オブジェクトはメンバー変数を持ち、float、string、int、オブジェクト参照を、関数呼び出しをトリガーしたイベントに関する情報とともに、同時に関数に受け渡すことができます。

// This C# function can be called by an Animation Event
public void PrintFloat (float theValue) {
    Debug.Log ("PrintFloat is called with a value of " + theValue);
}


クリップにアニメーションイベントを追加するには、現在の再生位置で Event button をクリックするか、アニメーションの任意の位置でイベントをトリガーしたいタイミングで、Event Line をダブルクリックします。イベントを追加した後、マウスでドラッグすることにより位置を再度変更することもできます。イベントを削除するには、選択して Delete を押すか、右クリックしてコンテキストメニューから Delete Event を選択します。

 Animation Events を Event Line に表示。新規に Animation Events を追加するには Event Line をダブルクリックするか、Event button を使用します。
Animation EventsEvent Line に表示。新規に Animation Events を追加するには Event Line をダブルクリックするか、Event button を使用します。

イベントを追加すると、関数の名前と渡したい引数の値を入力するためにプロンプトがダイアログボックスとして表示されます。

 Animation Event でポップアップするダイアログボックスで、どの関数にどの引数の値で呼び出しするか指定できます。
Animation Event でポップアップするダイアログボックスで、どの関数にどの引数の値で呼び出しするか指定できます。

クリップに追加されたイベントはイベントラインでマーカー表示されます。マーカーの上をマウスオーバーすることで関数と引数値がヒント表示されます。

アニメーションイベントマーカー( Animation Event marker )の上をマウスオーバーすることで、呼出する関数と引数値が表示されます。
アニメーションイベントマーカー( Animation Event marker )の上をマウスオーバーすることで、呼出する関数と引数値が表示されます。

とても簡単な例を挙げます。簡単な機能を持つ短い関数 PrintEvent() を加え、文字列と時刻を含むデバッグメッセージを表示します。

// This C# function can be called by an Animation Event
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public void PrintEvent(string s) {
        Debug.Log("PrintEvent: " + s + " called at: " + Time.time);
    }
}

Unity で Cube オブジェクトを作成し ExampleClass スクリプトを加えます。そのオブジェクトを選び Animation ウィンドウを開きます。X 座標の Position カーブを設定します。

Animation ウィンドウ
Animation ウィンドウ

次に、X 座標のアニメーションを 1 秒ほどの間に 0.4 ほどに増加するように設定します。それから、約 0.8 秒の時点でアニメーションイベントを作成します。再生ボタンを押すと、キューブが X 軸に沿って前に行ったり後ろに行ったりして動きます。イベントメッセージは 0.8 秒の時点から毎秒ごとにコンソールに表示されます。この例は簡単なゲームオブジェクトにアニメーションイベントを加える簡単な方法です。

複数の動作パーツがあるオブジェクト
アニメーターコントローラー