Moving kinematic rigidbody with child rigidcodies has high performance impact

Hi,

I have a physics related performance problem and I wonder if anybody has an idea how to improve it.

I have a kinematic rigidbody (boat) which has a lot of non-kinematic rigidbodies (items) in it.
The boat is being moved by code in the update method.

Even though moving the boat will (or should) never cause any of those items to collide with anything the moving items use up a lot of performance.

Any clues how to reduce this performance overhead is much appriciated.

The kinematic boat should be moved using Rigidbody.MoveRotation and Rigidbody.MovePosition from FixedUpdate.

Note that the non-kinematic objects will be colliding with the boat anyways, regardless of the parenthood relationship. A Rigidbody component just overrides its GameObject’s Transform based on the physics interactions.

How many non-kinematic rigidbodies (items), do you have in that boat?

Thanks for your replies. I tried moving it via MovePosition and MoveRotation but the performance gets even worse. Before it went from 60 down to around 42 FPS and now it goes down to 37 FPS.
The number of items depends on how many the player buys. Currently its limited to 3 per item which results in around 40 items max. But usually its just around 15 items in the boat

Can you approximate the mass of the objects, deactivate them as physics bodies, nest them to the boat and make a simple, single physics body that replaces their mass?

Interesting.
What happens, if you only have a few objects, like 5 or 10 items, in the boat?
Is the performance better?