在Box2d (iphone)中忽略物体之间的碰撞



我有三种类型的主体。他们是

1) MouseJointBody(它只与mouseJoint一起移动)

2) 2 MovingBodys(它在世界上连续移动)

3) StaticBody(固定在固定位置)

我需要这些物体之间的碰撞:

1) MouseJointBody with movingbody and StaticBody and world boundaries

2) StaticBody仅与MouseJointBody

3)移动身体只与MouseJointBody和世界边界

移动的物体相互碰撞

,但不需要与StaticBody和MovingBody碰撞。我为这些主体设置过滤器数据,如下面的代码:

StaticBody:

fixDef.filter.categoryBits=0x0004;
fixDef.filter.maskBits= 0x0002;

MovingBodys:

fixDef.filter.categoryBits=0x0004;
fixDef.filter.maskBits= 0x0002;

MouseJointBody:

fixDef.filter.categoryBits=0x0002;
fixDef.filter.maskBits= 0x0004;

一切都工作得很好,但我的MovingBodys没有相互碰撞,MouseJointBody和MovingBody没有与世界盒子碰撞。这两个人要离开这个世界了。请告诉我这个问题的解决方法。

在Farseer中,这是一个项目,在Box2D中存在CollisionCategory,但在Box2D中解决不同的

请审阅下面的讨论

的想法是将物体类型指定为each,并且物体只能碰撞。

在讨论中处理了一个类似的情况,a击中B, C击中D,但a没有击中a

我认为,当你使用过滤器时,你需要对墙壁应用过滤器。并设置所有的掩码位。

movingbody的例子:

fixDef.filter.categoryBits=0x0004;
fixDef.filter.maskBits= 0x0002 | 0x0006;

(0x0006是分类位的墙)

最新更新