【Unity】アニメーションイベント

2024年4月8日

Unityのアニメーションイベントは、アニメーションの特定のタイミングでスクリプトをトリガーすることができる仕組みです。アニメーションイベントを使用することで、アニメーションが再生されるタイミングに応じて、スクリプトでカスタム処理を実行できます

例えば、キャラクターがジャンプするアニメーションを再生しているとき、ジャンプが最高点に到達したときに効果音を再生するような処理を実装する場合、アニメーションイベントを使用して、そのタイミングでスクリプトをトリガーし、効果音を再生することができます。

アニメーションイベントは、アニメーションの再生タイミングに応じて、オブジェクトの状態を変更することもできます。例えば、アニメーションが再生されるときにオブジェクトを移動したり、表示/非表示にしたりすることができます。

アニメーションイベントを使用して、キャラクターのジャンプ時に効果音を再生するスクリプトのサンプルコードです

using UnityEngine;

public class CharacterController : MonoBehaviour
{
    public AudioClip jumpSound;
    private AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
    }

    public void Jump()
    {
        audioSource.PlayOneShot(jumpSound);
    }
}

このスクリプトでは、AudioSource を持つオブジェクトにアタッチされています。アニメーションイベントは、アニメーションウィンドウで設定され、Jump メソッドが呼び出されます。Jump メソッドは、AudioSource コンポーネントを使用して、jumpSound クリップを再生します。

アニメーションイベントを設定するためには、アニメーションウィンドウを開き、イベントを設定したいフレームを選択し、イベントトリガーを追加して、メソッド名に Jump を指定します。

チュートリアルを使った練習

ここでは、実際にCubeをプレイヤーに見立てて、ジャンプアニメーションの頂点で効果音がなるようにしてみましょう

Cubeを1つ作成します

Animatorコンポーネントとアニメーションを作成します

Projectウィンドウで、アニメーションを作成(Create)します

アニメーションをファイルとして先に保存します(ここではJumpと名付けています)

CubeオブジェクトにAnimatorコンポーネントを有効にします

Cubeゲームオブジェクトにアニメーションファイルをドラッグすることで、一連の依存関係をまとめて作れます

D&D後

アニメーションの作成

  1. Cubeを選択して、Jumpアニメーションファイルを開きます(ダブルクリック)
  2. AddPrepertyをクリックして、TransformコンポーネントのPositionの「+」をクリックして選択します

次のように作成していきます
ここでは、PositionのY軸を途中で1にするようにしています

プレビューでアニメーションを確認します

ジャンプの頂点で実行しいメソッドを登録します(イベントのタグを追加します)

インスペクターに登録エリアが出てきます

メソッド(イベントハンドラ)を作成して、Cubeオブジェクトにアタッチします

using UnityEngine;

public class JumpEvent : MonoBehaviour
{
    public void PlayJumpSound()
    {
        Debug.Log("ジャンプの音源を再生");
    }
}

作成したら、Cubeにアタッチします(方法は省略)

作成したメソッド(イベントハンドラ)を選択できるようになります

実行結果

頂点で、メソッドが実行されているのがわかります