[Unity] StateMachineBehaviour로 Animator를 감시하기

ChangJin·2023년 12월 19일
0

Unity

목록 보기
6/17
post-thumbnail

공식문서를 참고해 보면...

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 ");
    }
}
profile
게임 프로그래머

0개의 댓글

관련 채용 정보