在AndEngine Box2D中完全禁用物体的碰撞



我正在制作一款泡泡射击类型的游戏,我希望一个身体在爆炸或坠落时不会与任何其他东西相撞。我不能使用碰撞过滤,因为场景中所有的物体都是相同的类型。我想让碰撞失效。我不想让一个物体与另一个物体相撞。有人告诉我将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);

最新更新