Seating a Character affected by LinearVelocity causes desyncs and teleportation

When: Last reproduced 11/25
Studio: No plugins loaded. 0.1 incoming replication lag.

Control Case:

Touching a Seat or calling Seat:Sit(Humanoid) teleports the character to the seat on both client/server.

Bug Behavior:

When the character is affected by a LinearVelocity constraint, the seat teleports to the character and various desyncs happen depending on combinations of from where the Sit was called/weld created and if the LinearVelocity is present, Enabled, or Disabled on the Client and Server.

Reproduction:

The repro file has a localscript in ReplicatedStorage to use in the command bar to create the LinearVelocity and then seat the player.
LinearVelocityAndWeldBug.rbxl (55.7 KB)

Expected Behavior:

A character affected by LinearVelocity should react the same as in the Control Case: teleport to the seat.
The client’s LinearVelocity’s properties should determine how the character moves regardless of the server, because of network ownership.

Edit: I use an R6 Character.
I tried using RootPriority to no avail as suggested here: Vehicle Seat :Sit() teleports vehicle to character - #10 by ContextLost

3 Likes

We’ve filed a ticket into our internal database for this issue and will start investigating, we will update you when we have further information.

Thanks for flagging!

3 Likes

I believe this issue is solved by setting Workspace.MoverConstraintRootBehavior to Enabled. With this property enabled, the character now teleports to the seat rather than the seat teleporting to the character. The script in your file still seems to cause some odd network ownership issues when the weld is created manually but everything now works as expected when using Seat:Sit. Let me know if that helps. Thanks.