# OnStateMove

> Invoked during the Animator Root Motion pass. Implement this message to modify the result of the animation root motion on a state by state basis.

## Definition

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

## OnStateMove(Animator, AnimatorStateInfo, int)

Invoked during the Animator Root Motion pass. Implement this message to modify the result of the animation root motion on a state by state basis.

```csharp
public virtual void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
```

### Parameters

**** (\[Animator]\(/engine/6000.3/script-reference/unityengine/animator)): The Animator evaluating this state machine.**** (\[AnimatorStateInfo]\(/engine/6000.3/script-reference/unityengine/animatorstateinfo)): **** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The current layer being evaluated.

### Remarks

OnStateMove is invoked every frame for the currently evaluated state, as well the next state and the interrupted state if applicable.

It will be invoked after [MonoBehaviour.OnAnimatorMove()](/engine/6000.3/script-reference/unityengine/monobehaviour/onanimatormove.md).

**Note**: OnAnimatorMove may be invoked multiple times on the same state if that state is synchronized on multiple layers.

## OnStateMove(Animator, AnimatorStateInfo, int, AnimatorControllerPlayable)

Invoked during the Animator Root Motion pass. Implement this message to modify the result of the animation root motion on a state by state basis.

```csharp
public virtual void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller)
```

### Parameters

**** (\[Animator]\(/engine/6000.3/script-reference/unityengine/animator)): The Animator evaluating this state machine.**** (\[AnimatorStateInfo]\(/engine/6000.3/script-reference/unityengine/animatorstateinfo)): **** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The current layer being evaluated.**** (\[AnimatorControllerPlayable]\(/engine/6000.3/script-reference/unityengine/animations/animatorcontrollerplayable)):&#x20;

### Remarks

OnStateMove is invoked every frame for the currently evaluated state, as well the next state and the interrupted state if applicable.

It will be invoked after [MonoBehaviour.OnAnimatorMove()](/engine/6000.3/script-reference/unityengine/monobehaviour/onanimatormove.md).

**Note**: OnAnimatorMove may be invoked multiple times on the same state if that state is synchronized on multiple layers.
