[Unity] GetCurrentAnimatorStateInfo 애니메이션 상태 체크

ChangJin·2023년 12월 19일
0

Unity

목록 보기
7/17
post-thumbnail

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

https://docs.unity3d.com/ScriptReference/Animator.GetCurrentAnimatorStateInfo.html

애니메이션의 현재 상태의 정보를 체크할 수 있습니다. 상태의 상세한 부분까지 얻을 수 있습니다.

state의 속도, 길이, 이름 그리고 다른 values도 얻을 수 있습니다.

Animator.GetCurrentAnimatorClipInfo를 사용하면 state가 가지고 있는 clips 으로부터 정보를 가져올 수도 있습니다.



//Create a GameObject and attach an Animator component (Click the Add Component button in the Inspector window, go to Miscellaneous>Animator).
//Create an Animator by going to Assets >  Create > Animator Controller. Attach this Controller to the Animator attached to your GameObject
//In the Animator Controller, create a Trigger parameter in the Parameters tab and name it “Jump”. Then create states and transition arrows that use this parameter.

//This script triggers an Animation parameter when you press the space key.

using UnityEngine;

public class Example : MonoBehaviour
{
    Animator m_Animator;
    //Use to output current speed of the state to the screen
    float m_CurrentSpeed;

    void Start()
    {
        //Get the Animator, which you attach to the GameObject you intend to animate.
        m_Animator = gameObject.GetComponent<Animator>();
        //The current speed of the first Animator state
        m_CurrentSpeed = m_Animator.GetCurrentAnimatorStateInfo(0).speed;
    }

    void Update()
    {
        //Press the space bar to tell the Animator to trigger the Jump Animation
        if (Input.GetKeyDown(KeyCode.Space))
        {
            m_Animator.SetTrigger("Jump");
        }

        //When entering the Jump state in the Animator, output the message in the console
        if (m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Jump"))
        {
            Debug.Log("Jumping");
        }
    }

    void OnGUI()
    {
        //Output the first Animation speed to the screen
        GUI.Label(new Rect(25, 25, 200, 20),  "Speed of State : " + m_CurrentSpeed);
    }
}
profile
게임 프로그래머

0개의 댓글

관련 채용 정보