Is it possible to have a Rigidbody parent with multiple Rigidbody children?

I’m attempting to make a spaceship that can arbitrarily fly around, with little crew members on board. I’d like physics for both the crew members and the spaceship, so I have a rigidbody for each. In order to make the crew members stick to the spaceship as it flies around, the crew members are children to the spaceship. Ideally, I’d like if both objects were not kinematic.

TL;DR - How would you make a bunch of crew member rigidbodies follow a spaceship rigidbody?

I’ve found that having a rididbody parent and rigidbody child is apparently a big no-no in Unity.

And testing confirms this. The child only follows the parent when the child is asleep. Once physics acts on the child, it no longer follows the parent. In the left image the red dot (child) follows the parent and thus always stays in the top-left region of the parent, but after applying a force the child wakes up, no longer moves relative to the parent, and ends up at the area bottom-left relative to the spaceship (despite the force I enacted pushing it right). 74541-1.png

In the attempt to prevent this from happening, I made use of a dummy object so there’s never a parent rigidbody with a child rigidbody.
The hierarchy looks like this: 74542-2.png

ShipMain can be ignored. It’s basically just used as a folder. None of its value (even the transform) ever change.
ShipRB is the rigidbody physics of the ship.
ShipWorld is not a rigidbody. It is just a transform, with a script. Every FixedUpdate(), the script copies the transform of ShipRB onto ShipWorld.

This works perfectly, whether rigidbodies are asleep are awake. However, there are strange performance issues. With 2D physics, performance drops to a crawl after a few hundred children. 3D physics can handle 1000+ children acceptably.

In either case, I get large physics spikes of 3ms (3D) or 1000+ms (2D), despite the children not doing anything. They’re just rotating along with the parent.

Clearly, my dummy object method is breaking the engine somewhat.

How would you tackle this (seemingly) simple issue of having a parent rigidbody with multiple rigidbody children, without breaking the physics engine?

I think you want Physics Joints. I haven’t really used them yet, but I think that’s what they are for.