b2Body/b2Fixture是否可以设置为被AABB查询或光线投射忽略



我正在构建一个2-D自上而下的游戏,其中我需要有一个用于寻路的区域的动态图。

我想把Box2D实体(圆形或正方形)的网格作为"传感器"覆盖在感兴趣的区域上。这些对象都是静态实体,并被标记为传感器,因此没有碰撞响应,但检测到了碰撞,我可以使用此(碰撞回调)将导航图中的节点标记为已被占用,以便实体可以在它们周围导航。

移动实体仍将进行光线投射和AABB查询,作为它们与环境交互的一部分(寻找特定的东西等)。我希望而不是让它们的查询与传感器网络相交。

虽然我当然可以在实体使用的侦听器对象中使用用户标签和过滤来过滤传感器,但我想知道Box2D中是否已经有一种方法可以让AABB/Ray Cast查询忽略某些固定装置?

此检查通常最好在查询回调中完成。b2RayCastCallback和b2QueryCallback都有一个ReportFixture函数,它为您提供了一个fixture,因此您可以检查是否要忽略它。

(我不确定这是否是你在问题中最后一段的意思……如果是,那么我想答案只是"不":)

最新更新