我有3种身体。他们是
1)MouseJointBody(仅使用mouseJoint移动)
2)2个MovingBodys(它在世界上不断移动)
3)StaticBody(固定在固定位置)
我需要在这些身体之间发生碰撞:
1)带有MovingBodys和StaticBody以及世界bounderies的MouseJointBody
2)StaticBody仅限MouseJointBody
3)MovingBodys仅限MouseJointBody和世界bounderies
4)MovingBodys相互碰撞
但不需要与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不会与世界盒发生碰撞。这两个人走出了世界。请告诉我这个解决方案。
答案 0 :(得分:0)
在Farseer中,Box2D中的proyect baseb存在CollisionCategory但在Box2D中解析不同
请查看以下discussion
这个想法是分配身体类型是每个,并且身体只能碰撞。
在讨论中处理了一个类似的案例,A命中B,C命中D,但A没有命中A
答案 1 :(得分:0)
我认为,当您使用过滤器时,您需要将过滤器应用于墙壁。 并设置所有的maskBits。
MovingBodys例如:
fixDef.filter.categoryBits=0x0004;
fixDef.filter.maskBits= 0x0002 | 0x0006;
(0x0006是墙的categoryBits)