1

我正在开发一款泡泡射击类型的游戏,我希望身体在爆裂或坠落时不会与其他任何东西发生碰撞。我不能使用碰撞过滤,因为场景中的所有物体都属于同一类型。我想禁用碰撞。我不想让身体与任何其他身体发生碰撞。有人告诉我将 isSensor 标志设置为 true,但我再次无法获取标志并设置它。请帮忙。

4

3 回答 3

5

找到了答案:

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

将传感器设置为 true 将不会对身体产生碰撞效果。但请记住,实际上正在发生冲突并调用了联系侦听器。但是由于物理原因导致的碰撞效应没有发生,所以你需要检查身体是否将 isSesors 设置为 true,在接触侦听器中什么也不做。

于 2013-06-18T07:49:29.467 回答
2

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

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

使用此方法,您可以执行碰撞过滤。以下示例中表示的那个东西。

物理碰撞过滤

于 2013-06-18T17:06:05.947 回答
0

如果您不希望它们发生碰撞,请为您的夹具的 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);
于 2015-09-23T07:39:40.940 回答