Skip to content

NetworkAnimator trigger on non-base layer ignores transition duration on remote clients #3492

Open
@GabrielBigardi

Description

@GabrielBigardi

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

  1. 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).
  2. Set the transition duration (e.g., 0.1 seconds) and ensure it's not instantaneous.
  3. Attach the Animator to a NetworkObject with Owner Network Animator enabled.
  4. On the owner client, call animator.SetTrigger("Slash") to trigger the animation.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    stat:awaiting-triageStatus - Awaiting triage from the Netcode team.stat:reply-neededAwaiting reply from Unity accounttype:bugBug Report

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions