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);
}
}