Seeking Joint Expert

I’ve lost two days trying to figure this out. I have a simple torus (donut), and I want it to float, move and wobble in space but never to flip upside down. I’ve applied a configurable joint, and limited the X Z Angular motion like this:

Low Angular XLimit
Limit: -30
Bounciness: 1
Spring: 20
Damper: .15

High Angular XLimit
Limit: 30
Bounciness: 1
Spring: 20
Damper: .15

Angular ZLimit
Limit: 30
Bounciness: 1
Spring: 20
Damper: .15

Everything else is at their default settings, I believe. If I restrict the X or Z rotation on the rigidbody, the limit works fine for the other axis, but with all axes free the thing just freaks out as soon as it’s affected by a force. It rotates beyond its limits and starts spinning like crazy.

What am I doing wrong? The effect I’m trying to get is similar to a tire swing, but without the suspension chains. I just want the donut to lean in all directions, while spinning freely on the Y axis, but never lean past 90 degrees X or Z and flip over. Thanks for any help!

Figured it out. In case anyone else barks up this tree, the solution was to assign Y as “Axis,” and X as “Secondary Axis.” Then don’t assign Low and High Angular XLimits, but do assign identical Y+Z Angular Limits. You can also assign Rotational Drive Mode to “X YZ” and then enable Angular YZDrive to make the joint return to a pivot point (keep Angular XDrive disabled).

I’m still somewhat confused as to why this worked, but there you go.