Description
Description
When using Unity's Owner Network Animator to synchronize a trigger-based animation on a non-base Animator layer, the animation plays instantly on remote clients without respecting the configured transition duration. This occurs despite the transition settings being correctly configured in the Animator Controller. Replacing the trigger with a manual CrossFade() call resolves the issue, suggesting the transition timing is being skipped or ignored on remote clients.
Reproduce Steps
- Create an Animator Controller with a second layer (non-base) that contains a transition from an empty state to a animation triggered by a trigger parameter (a "Slash" for example).
- Set the transition duration (e.g., 0.1 seconds) and ensure it's not instantaneous.
- Attach the Animator to a NetworkObject with Owner Network Animator enabled.
- On the owner client, call animator.SetTrigger("Slash") to trigger the animation.
- Run 2 clients using Multiplayer Play Mode or similar, observe that even tho locally it respects the transition, on other clients it doesnt.
Actual Outcome
On the owner client, the animation plays smoothly with the expected transition duration.
On remote clients, the animation plays instantly without any transition, ignoring the configured duration. This creates a visual inconsistency between the local and remote player.
Expected Outcome
The animation should transition with the same duration and blend settings across all clients, including non-owner clients, maintaining consistency with how it appears on the owner client.
Screenshots
N/A (issue is visual and reproducible with animation watching).
Environment
- OS: Windows 11
- Unity Version: 6000.0.41f1
- Netcode Version: 2.4.0
- Netcode Commit: I have no clue
- Netcode Topology: Client-Server with Distributed Authority
Additional Context
Replacing the SetTrigger("Slash") call with a direct animator.CrossFade("Slash", 0.1f, 1) on all clients via a ClientRpc fixes the issue and respects transition durations consistently across clients. This suggests that NetworkAnimator's trigger syncing doesn't apply transition settings properly for additional Animator layers.
I haven't tested it with base-layers or non-trigger variables to check, it's completely possible that it happens anyway.