https://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html
StateMachineBehaviour 란 state machine 상태를 추가할 수 있는 component입니다.
즉 Animator state machine의 상태 변화에 맞게 CallBack 함수를 실행해줍니다. state machine에 개별 상태로 연결할 수 있습니다.
이렇게 하면 상태 머신이 특정 상태로 전환되거나, 상태를 종료하거나, 해당 상태로 유지될 때 실행할 코드를 작성할 수 있습니다.
따라서 상태를 테스트하거나 상태 변경을 감지하기 위해 로직을 직접 작성할 필요가 없습니다.
using UnityEngine;
public class AttackBehaviour : StateMachineBehaviour
{
public GameObject particle;
public float radius;
public float power;
protected GameObject clone;
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
clone = Instantiate(particle, animator.rootPosition, Quaternion.identity) as GameObject;
Rigidbody rb = clone.GetComponent<Rigidbody>();
rb.AddExplosionForce(power, animator.rootPosition, radius, 3.0f);
}
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Destroy(clone);
}
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack Update ");
}
override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack Move ");
}
override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("On Attack IK ");
}
}