我有3种类型的身体。他们是

1)MouseJointBody(仅与mouseJoint一起移动)

2)2个MovingBodys(在世界上不断移动)

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

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

1)具有MovingBodys和StaticBody以及世界边界的MouseJointBody

2)仅使用MouseJointBody的StaticBody

3)仅与MouseJointBody和世界边界一起使用MovingBodys

4)MovingBody相互碰撞

但不需要与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;


一切正常,但我的MovingBody不会相互碰撞,MouseJointBody和MovingBody不会与世界框碰撞。这两个正在消失。请告诉我该解决方案。

最佳答案

在Farseer中,Box2D中的proyect baseb存在CollisionCategory,但在Box2D中要解决不同的问题

请查看以下discussion

我们的想法是指定每种类型的物体,并且物体只能碰撞。

在讨论中处理了类似的情况,A击中B,C击中D,但A击中A

09-10 13:21