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
}
添加回答
舉報