我正在制作一款泡泡射击类型的游戏,我希望一个身体在爆炸或坠落时不会与任何其他东西相撞。我不能使用碰撞过滤,因为场景中所有的物体都是相同的类型。我想让碰撞失效。我不想让一个物体与另一个物体相撞。有人告诉我将isSensor标志设置为true,但我再次无法获得该标志并设置它。请帮助。
找到答案了:
for(int i=0; i<getBody().getFixtureList().size();i++){
this.getBody().getFixtureList().get(i).setSensor(true);
}
将传感器设置为true将不会对物体产生碰撞效果。但是记住实际上发生了碰撞并且调用了联系侦听器。但是由于物理的碰撞效果没有发生,所以你需要检查如果body的isSesors设置为true,在contact listeners中什么都不做
您还可以使用掩码位和类别位属性来改变某些主体的行为,而其他主体则作为正常主体。
这样你就可以创建多组物体,它们以组的形式响应碰撞。表示一个基团与另一个基团具有不同的碰撞行为。
使用这个方法可以执行冲突过滤。
物理碰撞滤波
如果您不希望fixture的filterindex发生冲突,则为负值,如果您希望它们发生冲突,则为正值。
用于删除碰撞
public static final FixtureDef PLAYERS_FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f, false, CATEGORYBIT_PLAYERS, MASKBITS_WALL, (short)-1);
和碰撞
public static final FixtureDef PLAYERS_FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f, false, CATEGORYBIT_PLAYERS, MASKBITS_WALL, (short)1);