LinearVelocity moves along the X and Z axis when PlaneVelocity is set to 0 from a low constant Velocity and MaxForce is low

Reproduction Steps

Create a LinearVelocity in a part (xzVelocity), with a VelocityConstraintMode of Plane, where the PrimaryTangentAxis is 1,0,0 and the SecondaryTangentAxis is 0,0,1, and the MaxForce is 2. There should also be another LinearVelocity within the part with a VelocityConstraintMode of Line, where the LineDirection is 0, 1, 0, with a high MaxForce. There should also be an AlignOrientation within the Part with OneAttachment Mode, RigidityEnabled, and PrimaryAxis 1,0,0, and SecondaryAxis 0,1,0. There should be a Root attachment within the part where all of the constraints are set to.

Set the xzVelocity PlaneVelocity to a Vector2 with a magnitude of 12 in a random direction for a couple seconds. Then set the PlaneVelocity to a Vector2 with a magnitude of 0. Observe how when the PlaneVelocity is set to 0, the part tends to go along the closest axis (either X or Z, can be positive or negative).

I have attached a reproduction file.

LinearVelocity.rbxl (33.7 KB)

Further inspection shows that when below a certain speed it chooses an axis to follow until it reaches a certain speed, which doesn’t make any sense. Pink arrow shows desired direction, meanwhile green shows actual direction.

Example of this in this place:

LinearVelocityBrokenCapsule.rbxl (41.8 KB)

Expected Behavior

I expect the LinearVelocity to carry going on the same direction of the linearVelocity when it is set to 0.

Actual Behavior

The LinearVelocity goes along either X or Z axis (positive and negative) depending on whats closest, when PlaneVelocity set to 0,0.


It’s a little bit difficult, but I ended up using a Vector Force, with a force that starts high when input starts and slowly decreases towards zero as it reaches its target speed and magnitude, and applies a force in the opposite direction to direction of travel when slowing down, moving towards zero as it reaches its target.

Issue Area: Engine
Issue Type: Other
Impact: High
Frequency: Constantly
Date First Experienced: 2022-08-01 00:08:00 (+01:00)
Date Last Experienced: 2022-08-01 00:08:00 (+01:00)


Thanks for the report ! We are aware of this issue and we are working on changing the math assumption that causes this behavior, however this may take some time. We’ll get back to you when there are any updates on this issue.