Unity のアニメーションはとても便利な機能ですよね。今回は、アニメーションからスクリプトのメソッドを呼び出す方法をご紹介します。下記の動画は、オープニングの画面です。プレイヤーが左から右に走ってジャンプする、というもの。
このプレイヤーの動きは Unity のアニメーションで作成しています。着地をしたら、「Push」のボタンを表示させています。ジャンプのアニメーションが終わったときに、ボタンを表示させるメソッドを呼び出しているのです。それではどのように作るか見ていきましょう。
STEP1:アニメーションにイベントを追加する
下記は、アニメーション「OpeningJump」の着地のタイミングで、イベント「onAnimationEnd」を登録する例です。アニメーションの2秒付近に、青色のマークがついていると思います。これでスクリプトのメソッドを呼ぶ準備ができました。
STEP2:スクリプトを作成する
STEP1で登録したイベントと同じ名前のメソッド(onAnimationEnd)を定義します。シーンが呼び出されたらボタンを非表示にし、onAnimationEnd メソッドが実行されるとボタンを表示させるプログラムです。
public class ButtonController : MonoBehaviour
{
[SerializeField] private GameObject myGameObject;
// Start is called before the first frame update
private void Start()
{
myGameObject.SetActive(false);
}
public void onAnimationEnd()
{
myGameObject.SetActive(true);
}
}
STEP3:アニメーションとスクリプトを紐付ける
ここでは、Player にアニメーションとスクリプトをアタッチしました。これで、アニメーションに登録したイベントが、設定したタイミングでスクリプトを呼び出します。