Android 在AndEngine Box2D中完全禁用车身碰撞

Android 在AndEngine Box2D中完全禁用车身碰撞,android,box2d,andengine,game-physics,Android,Box2d,Andengine,Game Physics,我正在做一个泡泡射击游戏,我希望一个物体在爆炸或坠落时不会与其他物体碰撞。 我不能使用碰撞过滤,因为场景中的所有实体都是相同类型的。 我想禁用碰撞。我不想让一个物体与任何其他物体碰撞。有人告诉我将isSensor标志设置为true,但我同样无法获取该标志并将其设置为true。 请帮助。找到了答案: for(int i=0; i<getBody().getFixtureList().size();i++){ this.getBody().getFixtureList().ge

我正在做一个泡泡射击游戏,我希望一个物体在爆炸或坠落时不会与其他物体碰撞。 我不能使用碰撞过滤,因为场景中的所有实体都是相同类型的。 我想禁用碰撞。我不想让一个物体与任何其他物体碰撞。有人告诉我将isSensor标志设置为true,但我同样无法获取该标志并将其设置为true。 请帮助。

找到了答案:

for(int i=0; i<getBody().getFixtureList().size();i++){
        this.getBody().getFixtureList().get(i).setSensor(true);
    }
for(int i=0;i找到了答案:

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

for(int i=0;i您还可以使用掩码位和类别位属性来更改某些主体的行为,而其他主体的行为与正常主体相同

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

使用此方法,您可以执行冲突过滤。下面的示例中显示了这一点


您还可以使用掩码位和类别位属性来更改某些主体的行为,而其他主体的行为与正常主体的行为相同

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

使用此方法,您可以执行冲突过滤。下面的示例中显示了这一点


如果您不希望fixture的filterindex发生碰撞,请为其指定负值;如果您希望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);
和碰撞

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

如果不希望它们发生碰撞,则为装置的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);
和碰撞

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

事实上,我在屏幕上有100个多个物体,它们不能被分组,所以我不能使用类别比特。这是一个漫长的过程。但是,你的解决方案是一个可以帮助其他人的解决方案。谢谢你考虑你的答案的一般场景。实际上,我有多个身体,比如说屏幕上的100个,它们不能被分组,所以我不能使用CATEG。这是一个漫长的过程。但是,你的解决方案是一个可以帮助其他人的解决方案。谢谢你考虑你的答案的一般情景。谢谢,这应该被接受作为答案,因为它与问题更相关。谢谢,这应该被接受作为答案,因为它与问题更相关。