1 回答
TA贡献1856条经验 获得超11个赞
该categoryBits和maskBits是primarly的Box2D的说哪个夹具碰撞与其他夹具。
因此,当您的其中一个fixtures与fixture您不需要的全部或全部发生冲突时category- 或maskBits为它。
如果灯具与您不需要的所有其他灯具发生碰撞category- 或maskBits.
如果灯具不与任何其他灯具发生碰撞,您可以设置isSensor = true;而不是使用category- 和maskBits。
如果您知道哪个对象与另一个对象发生了碰撞,您可以使用UserDataof fixtures。
为您拥有的所有类型创建一个枚举:
public enum Type {
NOTHING,
GROUND,
FRAN,
FRAN_BODY_SENSOR,
ENEMY_FRONT,
BRICK,
etc...
}
然后通过创建夹具,您可以将类型设置为 UserData:
Fixture fixture = body.createFixture(fixtureDef);
fixture.setUserData(Type.GROUND);
//short:
body.createFixture(fixtureDef).setUserData(Type.GROUND);
最后,您ContactListener可以检查夹具的 UserData 以找出哪个对象与哪个对象碰撞:
if(fixA.getUserData() == Type.FRAN_HEAD && fixB.getUserData() == Type.BRICK){
//FRAN_HEAD and BRICK has collided
}
添加回答
举报