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.
Workaround
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)