mattb
One idea that may work is use a force on the object toward the base of the rope and just set the length as it gets closer. That may be more true to life where a force would be used to pull the rope in. You could also instead set the velocity of the object parallel to the rope as well, which would make the rope retract at a constant rate. For the latter you'll need this formula to get velocity along an angle:
velocity at angle = vx*cos(ang) + vy*sin(ang)
So given:
ang= angle of rope
and
rope_vel
We can set the velocity so the perpendicular velocity stays the same and the velocity along the rope is whatever value we want.
perp_vel= vx*cos(ang+90) + vy*sin(ang+90)
vx=rope_vel*cos(ang) + perp_vel*cos(ang+90)
vy=rope_vel*sin(ang) + perp_vel*sin(ang+90)
Then as with the first idea only set the rope length as the object moves closer.
Edit:
A third idea would be to set the maximum force of the joint so that the collision isn't as radical.