RopeConstraint creates constant velocity

When a part and a character attached together by rope and if the rope is short enough and the character is right on top of the part, the part or the character will fly with constant velocity.

I came across this strange physics behavior while building and such behavior is definitely not normal. This occurs 100% of the time, given you are using the right set up.

Steps To Reproduce
1.) Create a local script in StarterGui
2.) Insert this code

wait(0.1)

local Platform = Instance.new("Part")
Platform.Size = Vector3.new(6,1,6)
Platform.Parent = game.Workspace

local PlatformAttachment = Instance.new("Attachment")
PlatformAttachment.Parent = Platform

local Rope = Instance.new("RopeConstraint")
Rope.Length = 2.1
Rope.Parent = Platform
Rope.Attachment0 = PlatformAttachment
Rope.Attachment1 = game.Players.LocalPlayer.Character.LowerTorso.WaistCenterAttachment

3 Likes

Do you have a use-case or expected result to this situation?

What’s going on here is that you’ve created and over-constrained system. The rope is too short for the distance between your torso and the floor part. Over-constrained systems will result in unexpected behavior (You can use other constraints instead of Rope here and observe some other strange issues). The best solution to this is to avoid creating these conditions all together, but if you had expected to get some other behavior out of this then we would like to know!

1 Like

I actually expected the character to be pulled down due to the shortness of the rope and eventually lay flat on the floor part preventing the character from standing.

Edit:
But as I decrease the length of the rope, the part will eventually shift to the back or front of the character, while the character is still standing and unaffected and the constant velocity bug stops occurring(obviously because the part is not under the character anymore). I see this behaviour is more likely to happen with anchored parts, however the humanoid is always overriding the expected physics outcome. This does not occur when attaching a short rope with two normal parts.

I eventually found a use case for this strange behaviour as a game mechanic, however, ever since I discovered this bug, I considered this as a “non-production” mechanic since the probability of this getting patched or fixed is uncertain. I am also unsure of what you mean by “over constrained”, is this the use of a lot of constraints or the rope being too short forcing it to produce strange behaviours?

“Over-constrained” doesn’t mean too many Constraints, just that one is being put into an unsolvable state. Here is an older post that helps explain more about what an “over constrained system” would be Physics Analyzer - detecting over-constrained systems

However, updates to the engine have made creating these over-constrained between parts rarely problematic (as you noticed when trying to reproduce between two parts) (more info here: Removing the Physics Analyzer from Studio).

The humanoid still has a lot of unique behaviors and forces that can get weird when your over-constrain though. In your case, the humanoid feet try to push up out of the floor, but the floor stays over the feet since the rope is holding it there. Once the rope got short enough and the part snapped to the front or back, the humanoid stopping pushing with its feet and was more or less okay.

For now, you are probably better off trying to manually change the humanoid state to lay down or something similar rather than using Constraint objects. While we are continuing to improve stability with humanoids, I wouldn’t expect this to be fixed soon.

1 Like