[solved] Prevent object with Rigidbody2D being moved by objects it collides with?

I have a large object that needs to have a Rigidbody2D component on it as I need to rotate it pretty fast and have its collision register accurately with some smaller Rigidbody2D objects that bounce around freely.

The collision is working great, however I’ve not yet been able to prevent the smaller objects from causing small changes in the larger object upon collision.

I’ve tried:

  • Setting fixed position to true on X and Y
  • Giving the large object high mass while the small objects have minimum mass
  • Originally had the larger object set to Is Kinematic and directly changed it’s rotation, but the collision didn’t work properly with this approach

The large object is supposed to rotate around a fixed central point, but it seems the smaller objects keep knocking it off center. I watch the transform position readouts while in play mode and they’re constantly fluctuating.

Is there a way I can:

  • Keep the Rigidbody2D components on both the large and the smaller objects
  • Allow the larger object to change the position of the smaller objects
  • Prevent the smaller objects from changing the position of the larger object

Thanks in advance for any help!

If anyone else has this problem, I found a solution.

The source of the issue was the smaller objects throwing out the larger object’s center of mass.

As such I was able to give the larger object a fixed point of rotation by giving it a hinge joint attached to another rigidbody. The rigidbody pivot has “Is Kinematic” set to true and its X and Y position fixed.

In the large object I unchecked its fixed X and Y position boxes, and set its “gravity scale” to zero so it wouldn’t swing around unless torque was applied to it.

Everything’s working as intended now.