I want to have items (dynamic bodies) that collide with the floor (static body) due to gravity. But I don’t want the player to collide with the items on the floor though I need to have a callback when the player overlaps an item (as if the item isSensor property was set to true).
Is it possible?
I tried some configurations with the category bits and mask bits with no success.
I didn’t have this problem before because items had a gravityScale set to 0 so they didn’t fall on the floor. But now they need to respond to gravity.
Thanks.
You have to implement a class that extends
b2ContactListener. You can choose to reject the collision inPreSolve()virtual function. In theb2Contactobject that is passed toPreSolve(), you can get the 2 fixtures, from which you can derive what it actually collides with if you have stored a pointer to the user data before.Before you start the game engine, create new object of the subclass of
b2ContactListener, then call methodSetContactListener()of the game world object to set up the listener.Sample code