Version: Unity 6.1 Alpha (6000.1)
LanguageEnglish
  • C#

AnimatorStateInfo

struct in UnityEngine

/

Implemented in:UnityEngine.AnimationModule

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Runtime information on the current or next animation state, managed by an Animator.

Use this struct to obtain information on the current animation state and its transitions. This information includes the name, duration, speed, and the looping status.

You can also use AnimatorStateInfo to control animation timing and to handle blending, state changes, and event timing.

Additional resources: Animator, AnimatorController, Animator.StringToHash.

The following example demonstrates how to use AnimatorStateInfo to manage transitions and adjust playback in real-time.

// This script demonstrate using AnimatorStateInfo to modify a parameter during animation.
// Ensure Animator has a "Run" state in Base Layer and a "SpeedMultiplier" parameter.

using UnityEngine;

[RequireComponent(typeof(Animator))]
public class AnimatorStateInfoExample : MonoBehaviour
{
    private Animator m_Animator;
    private readonly int m_RunStateHash = Animator.StringToHash("Base Layer.Run");

    void Start()
    {
        m_Animator = GetComponent<Animator>();
    }

    void Update()
    {
        // Retrieve the current animation state information
        AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(0);

        // Use the hashed name for comparison with the current state's full path hash
        if (stateInfo.fullPathHash == m_RunStateHash)
        {
            Debug.Log("Running state active. Normalized time: " + stateInfo.normalizedTime);

            // Perform actions based on the animation's progress
            if (stateInfo.normalizedTime > 0.5f && stateInfo.normalizedTime < 0.75f)
            {
                Debug.Log("Halfway through the Run animation.");
                m_Animator.SetFloat("SpeedMultiplier", 1.5f); // Adjust the playback speed
            }
        }
    }
}

Properties

fullPathHashThe full path hash for this state.
lengthCurrent duration of the state.
loopIs the state looping.
normalizedTimeNormalized time of the State.
shortNameHashThe hash is generated using Animator.StringToHash. The hash does not include the name of the parent layer.
speedThe playback speed of the animation. 1 is the normal playback speed.
speedMultiplierThe speed multiplier for this state.
tagHashThe Tag of the State.

Public Methods

IsNameChecks if name matches the name of the active state in the state machine.
IsTagChecks whether the animation state has the specified tag.