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

时间:2013-06-18 07:19:47

标签: android box2d andengine game-physics

我正在开发一款泡泡射击游戏,我想要一个身体在爆裂或摔倒时不与任何其他东西发生碰撞。 我不能使用碰撞过滤,因为场景中的所有物体都是相同的类型。 我想禁用碰撞。我不想让身体与任何其他身体发生碰撞。有人告诉我将isSensor标志设置为true,但我又无法获得标志并设置它。 请帮忙。

3 个答案:

答案 0 :(得分:5)

找到答案:

for(int i=0; i<getBody().getFixtureList().size();i++){
        this.getBody().getFixtureList().get(i).setSensor(true);
    }

将传感器设置为true将不会对身体造成碰撞效果。但请记住,实际上正在发生冲突,并且会调用联系人侦听器。但是由于物理原因造成的碰撞效应没有发生,所以你需要检查一下,如果isSesors设置为true,那么在联系人监听器中什么都不做。

答案 1 :(得分:2)

您还可以使用掩码位和类别位属性来更改某些正文和其他正文的行为。正常情况下。

通过这种方式,您可以创建多组响应碰撞的实体组。意味着一组具有与其他组不同的碰撞行为。

使用此方法可以执行碰撞过滤。这个东西在下面的例子中表示。

Physics Collision Filtering

答案 2 :(得分:0)

如果您不希望它们发生碰撞,则为滤网的过滤指数赋予负值,如果您希望它们发生碰撞,则为正值。

用于消除碰撞

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);