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

问题描述:

我有3种类型的物体。它们是忽略Box2d中的物体碰撞(iphone)

1)MouseJointBody(它与mouseJoint仅移动)

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

3)StaticBody(它被固定在恒定位置)

我需要这些机构之间的碰撞:

1)MouseJointBody与MovingBodys和StaticBody和世界bounderies

2)StaticBody只有MouseJointBody

3)只与MouseJointBody和世界bounderies

4)MovingBodys相互碰撞

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

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不会与世界博相撞X。这两个人走出了这个世界。请告诉我这个解决方案。

+0

:http://www.iforce2d.net/b2dtut/collision-filtering – iforce2d 2013-03-16 19:44:05

在先知是在Box2D的一个proyect baseb存在CollisionCategory但Box2D的解决不同

请查看遵循discussion

的想法是分配一个身型是每个,而机构能只碰撞。

在discussiontreated类似的情况

,A打B,C命中d,但A不打一

我想,当你使用过滤器,你需要使用过滤器,墙壁。 并设置所有的maskBits。

MovingBodys为例:

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

(0x0006是墙的categoryBits)这可能有助于