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