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