Spring Joint: Object doesn't stop moving

Very easy to reproduce problem (Unity 3.5.6f4):

  • create a Cube at (0,0,0)
  • add a SpringJoint
  • press Play
  • drag or reposition the Cube in space (and let go)

expected behaviour:

the Cube is pulled back to (0,0,0) and eventually comes to a full stop

actual behaviour:

the Cube is pulled back towards (0,0,0), but instead of stopping at the origin it swings into a perpetual, short distance orbit around it - it doesn’t get any closer or slow down, but keeps cycling - a true perpetual mobile.

Oddly, the second behaviour doesn’t occur every time, but ~ 3/5th of the times, the other tries actually stopping the object at (0,0,0). I’ve tried setting the anchor to (0,0,0), as well as an exhaustive combination of SpringJoint and PhysicsManager settings with no luck.

I am looking for any reliable way to return and stop the object at its world space origin - via SpringJoint or ConfigurableJoint settings, PhysicsManager tuning, or any possible scripted approaches.

Try to increase linear drag and angular drag to the rigidbody component of a cube .
you can play with values to simulate the spring strength.