14

如何检测身体是否与其他身体发生碰撞但不对碰撞做出反应。

默认情况下i - 检测碰撞和物体碰撞。

如果我设置了 fixtureDef 过滤器 - 身体不会发生碰撞,但我无法检测到碰撞。

请帮忙!

4

2 回答 2

22

如果夹具永远不需要与任何东西碰撞,你可以把它做成一个传感器。如果您需要它与某些东西而不是其他东西发生碰撞,您可以在碰撞侦听器的 PreSolve 中执行 contact->SetEnabled(false),具体取决于它与什么碰撞。

于 2012-06-16T10:16:06.410 回答
9

您在这里想要的是身体上的传感器固定装置。来自 box2d 手册:

有时游戏逻辑需要知道两个固定装置何时重叠但不应该有碰撞响应。这是通过使用传感器来完成的。传感器是检测碰撞但不产生响应的夹具。

您可以将任何灯具标记为传感器。传感器可以是静态的或动态的。请记住,每个主体可能有多个固定装置,并且可以混合使用传感器和实体固定装置。

传感器不产生接触点。有两种方法可以获取传感器的状态:

  1. b2Contact::IsTouching
  2. b2ContactListener::BeginContact 和 EndContact

您可以将夹具设置为传感器,然后将其写入您的联系人监听器。如果一个夹具的传感器标志设置为真,它将提供碰撞数据而无需物理模拟碰撞(即允许您测试任何其他碰撞夹具之间的重叠。)

这是关于如何开始使用传感器Ray Wenderlich 传感器教程的有用教程

于 2012-06-28T12:51:14.810 回答