AnimatorStateInfo
Unity5の新機能であるStateMachineBehaviorにはAnimatorStateInfoというものがあります。
これは簡単に言えばアニメーションの最中に処理を行うことが出来るものです。
AnimatorStateInfoはあらかじめスクリプト上でstateInfoと宣言されています。
StateMachineBehaviourについてはこちら
StateMachineBehaviourでAnimatorを監視する
スクリプト
Deadend
using UnityEngine;
using System.Collections;
public class DeadEnd : StateMachineBehaviour {
//Unity上で値を入れる
[SerializeField]
private float endtime;
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
}
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//ゲームオーバーにする時間
if (stateInfo.normalizedTime >= endtime)
{
//ゲームオーバーの状態に移行
gameSystemManager.GameStateProp = GameState.ON_OVER;
}
}
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
}
normalizedtimeというのは時間を0から1で表すものです。例えば5秒のアニメーションがあるとして0秒の時は0、5秒の時は1と表されるということです。
AnimatorStateInfo
他にも様々な機能があり、今回実装した死亡モーション以外にも活用できるので試してみてください。
AnimatorStateInfo