# AnimatorStateInfo

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

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.AnimationModule

```csharp
public struct AnimatorStateInfo
```

## Remarks

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.

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

Additional Resources: [Animator](/engine/6000.7/script-reference/unityengine/animator.md), [AnimatorController](/engine/6000.7/script-reference/unityeditor/animations/animatorcontroller.md), [Animator.StringToHash](/engine/6000.7/script-reference/unityengine/animator/stringtohash.md)

## Examples

```csharp
// 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

| Property                                                                                            | Description                                                                                                                                                                        |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [fullPathHash](/engine/6000.7/script-reference/unityengine/animatorstateinfo/fullpathhash.md)       | The full path hash for this state.                                                                                                                                                 |
| [length](/engine/6000.7/script-reference/unityengine/animatorstateinfo/length.md)                   | Current duration of the state.                                                                                                                                                     |
| [loop](/engine/6000.7/script-reference/unityengine/animatorstateinfo/loop.md)                       | Is the state looping.                                                                                                                                                              |
| [normalizedTime](/engine/6000.7/script-reference/unityengine/animatorstateinfo/normalizedtime.md)   | Normalized time of the State.                                                                                                                                                      |
| [shortNameHash](/engine/6000.7/script-reference/unityengine/animatorstateinfo/shortnamehash.md)     | The hash is generated using [Animator.StringToHash](/engine/6000.7/script-reference/unityengine/animator/stringtohash.md). The hash does not include the name of the parent layer. |
| [speed](/engine/6000.7/script-reference/unityengine/animatorstateinfo/speed.md)                     | The playback speed of the animation. 1 is the normal playback speed.                                                                                                               |
| [speedMultiplier](/engine/6000.7/script-reference/unityengine/animatorstateinfo/speedmultiplier.md) | The speed multiplier for this state.                                                                                                                                               |
| [tagHash](/engine/6000.7/script-reference/unityengine/animatorstateinfo/taghash.md)                 | The Tag of the State.                                                                                                                                                              |

## Methods

| Method                                                                            | Description                                                                 |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [IsName](/engine/6000.7/script-reference/unityengine/animatorstateinfo/isname.md) | Checks if `name` matches the name of the active state in the state machine. |
| [IsTag](/engine/6000.7/script-reference/unityengine/animatorstateinfo/istag.md)   | Checks whether the animation state has the specified tag.                   |
