4

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

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

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

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

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

1) MouseJointBody 与 MovingBodys 和 StaticBody 和世界边界

2) StaticBody 仅与 MouseJointBody

3) MovingBodys 仅具有 MouseJointBody 和世界边界

4) MovingBodys 相互碰撞

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

静态体:

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

移动体:

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

鼠标关节体:

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

一切正常,但我的 MovingBodys 没有相互碰撞,MouseJointBody 和 MovingBody 没有与世界框发生碰撞。这两个正在走出世界。请告诉我这个的解决方案。

4

2 回答 2

0

在作为 Box2D 中的项目基础的 Farseer 中存在 CollisionCategory 但在 Box2D 中解决不同的

请查看以下讨论

这个想法是分配身体类型是每个,并且身体只能碰撞。

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

于 2013-07-23T15:15:46.473 回答
0

我认为,当您使用过滤器时,您需要将过滤器应用于墙壁。并设置所有的 maskBits。

移动体示例:

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

(0x0006 是墙的类别位)

于 2015-06-05T21:56:20.927 回答