HingeConstraint displays broken behavior when ServoMaxTorque is changed to 0

Setting the ServoMaxTorque on a HingeConstraint with a Servo actuator doesn’t seem to apply the ServoMaxTorque correctly until other properties (such as TargetAngle or ActuatorType) are updated. The video below shows the issue. When I set the ServoMaxTorque to 0, the assembly stays angled when I expect it to start swinging in a pendulum motion.

Additionally, if the HingeConstraint is currently moving while the ServoMaxTorque is set to 0, it will start moving like a pendulum (as expected), but when swinging back past its TargetAngle, the HingeConstraint will suddenly stop and stick to the TargetAngle, even though ServoMaxTorque is set to 0.

Reproduction file:
servo_bug.rbxl (55.8 KB)

Expected behavior

When I set the ServoMaxTorque to 0 I expect the HingeConstraint to act as if the ActuatorType were set to ‘None’.

5 Likes

The behavior here is actually the intended behavior, even though it is admittedly non-intuitive in some cases. When the servo achieves its target, it “locks” in place in order to prevent stability issues and allow the system to fall asleep.

Even though this is currently the intended behavior, it may not always be the desired behavior so we will look into ways to allow more customization. For now, disabling the servo (instead of setting the torque to zero) should work. Thanks.

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.