One-way physics reaction : Objects reacting with physics to player without player being affected


When the square sprite dies in my game, he breaks apart into many little sprites, each with a 2d rigidbody. The player square respawns and can once again move about.

The result I am after is that the player can run into the amassing debris left from previous deaths without it affecting their movement or physics. I want the physics reaction to take place on the debris, but not on the player. Is this possible?

In my head I see the debris flying away as if being kicked, or flying away when squashed against a wall but it is imperative it doesn’t impact the player. So the player’s speed wouldn’t reduce and if they ran at a wall and jumped whilst against it they would jump flush against it.

I’ve been racking my brain about how to do this and am getting nowhere.

Thanks in advance.

I agree with robertblu that making a large mass disparity would probably be the best answer. That being said, you can do what you want to do. Put the debris on a Layer that doesn’t interact with the Player (so the player won’t be affected by them), then in that Layer add a kinematic rigidbody that mirrors the player’s size and movements (so the debris IS affected by the player).

A common solution is to:

  • ignore collisions between the player layer and the debris layer.
  • add another kinematic rigidbody as child to your player and allow collisions with the debris layer.