# Animation

{% hint style="info" %}
**coherence** only replicates animation parameters, not state. Latency can create scenarios where different Clients reproduce different animations. Take this into account when working with Animator Controllers that require precise timings.
{% endhint %}

Unity Animator's parameters are bindable out of the box, **with the exception of triggers**.

![Guard, Walk, MovX and MovY parameters available on CoherenceSync as variables](/files/AjwGQLxq73yla8OoKpkT)

### Multiple AnimatorControllers

While **coherence** doesn't officially support working with multiple AnimatorControllers, there's a way to work around it. As long as the parameters you want to network are shared among the AnimatorControllers you want to use, they will get networked. Parameters need to have the same type and name. Using the example above, any AnimatorController featuring a Boolean *Walk* parameter is compatible, and can be switched.

### Triggers

Triggers can be invoked over the network using [commands](/1.1/coherence-sdk-for-unity/networking-state-changes/commands.md). Here's an example where we inform networked Clients that we have played a jump animation:

```csharp
using UnityEngine;
using Coherence;
using Coherence.Toolkit;

public class JumpController : MonoBehaviour
{
    CoherenceSync coherenceSync;
    Animator animator;

    void Awake()
    {
        coherenceSync = GetComponent<CoherenceSync>();
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if (!coherenceSync.HasInputAuthority)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            MakePlayerJump();
        }
    }

    void MakePlayerJump()
    {
        coherenceSync.SendCommand<JumpController>(nameof(PlayJumpAnimation), MessageTarget.All, coherenceSync);
    }

    // bind to this method via the Bindings window
    public void PlayJumpAnimation(CoherenceSync jumpSync)
    {
        animator.SetTrigger("Jump");
    }
}
```

Now, bind the `PlayJumpAnimator` method as a [command](/1.1/coherence-sdk-for-unity/networking-state-changes/commands.md).

![PlayJumpAnimation command](/files/929bNiYSg5QYeaxDaCjb)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.coherence.io/1.1/coherence-sdk-for-unity/networking-state-changes/animation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
