> For the complete documentation index, see [llms.txt](https://docs.coherence.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coherence.io/0.9/authority/animation.md).

# Animations

{% 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.

![Speed, Pose and Jump parameters are available bindings on CoherenceSync as variables](/files/LNVPexpTvAeGNYRge0G8)

### Triggers

Triggers can be invoked over the network using [commands](/0.9/authority/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;
using System.Collections.Generic;

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 to the *PlayJumpAnimator*.

![](/files/o7Ff39g7a7fFGISGdX8F)
