如何检测身体是否与其他身体发生碰撞但不对碰撞做出反应。
默认情况下i - 检测碰撞和物体碰撞。
如果我设置了 fixtureDef 过滤器 - 身体不会发生碰撞,但我无法检测到碰撞。
请帮忙!
如果夹具永远不需要与任何东西碰撞,你可以把它做成一个传感器。如果您需要它与某些东西而不是其他东西发生碰撞,您可以在碰撞侦听器的 PreSolve 中执行 contact->SetEnabled(false),具体取决于它与什么碰撞。
您在这里想要的是身体上的传感器固定装置。来自 box2d 手册:
有时游戏逻辑需要知道两个固定装置何时重叠但不应该有碰撞响应。这是通过使用传感器来完成的。传感器是检测碰撞但不产生响应的夹具。
您可以将任何灯具标记为传感器。传感器可以是静态的或动态的。请记住,每个主体可能有多个固定装置,并且可以混合使用传感器和实体固定装置。
传感器不产生接触点。有两种方法可以获取传感器的状态:
- b2Contact::IsTouching
- b2ContactListener::BeginContact 和 EndContact
您可以将夹具设置为传感器,然后将其写入您的联系人监听器。如果一个夹具的传感器标志设置为真,它将提供碰撞数据而无需物理模拟碰撞(即允许您测试任何其他碰撞夹具之间的重叠。)
这是关于如何开始使用传感器Ray Wenderlich 传感器教程的有用教程