LibGDX 光线投射不会与 Box2D 静态碰撞 object

LibGDX raycast does not collide with Box2D static object

我正在尝试为 libGDX 中的 2D 游戏实现一个简单的 AI。如果玩家在范围内并且敌人可以看到玩家,AI 应该让敌人跟随玩家。为了确定敌人是否可以看到我正在使用 raycast.

的玩家

现在我的问题是,在 Box2D 世界中

光线投射似乎没有与静态 body 碰撞

(这只是一个假设,static body 是问题所在,因为它在 dynamic body 下工作正常)

问题

默认情况下,libGDX 中的光线投射会与静态物体发生碰撞吗?还是有其他方法可以使光线投射与静态物体发生碰撞?

我在 libGDX wiki or in the API 中找不到任何关于此的信息。

到目前为止我尝试了什么

我在敌人和玩家之间用动态 body 测试了光线投射 AI:

这里有光线投射 AI 的敌人(左上角的那个)没有向玩家(右下角的)移动,因为它们之间有一个动态 body(另一个敌人在中间),它与光线投射正确碰撞。

但是如果我在敌人和玩家之间放置一个静态 body 光线投射将不会检测到静态 body,而只能检测到动态 body(应该是发现晚于静态body):

此处中间的静态 body 未被光线投射检测到。

我还测试了在静态 body 上使用 setSleepingAllowed(false),以确保它不只是在睡觉。但这也没有解决它。

在 box2d 中,RayCasts 应该与静态物体发生碰撞,所以您的问题可能出在其他地方。

请记住,光线投射回调不会按照到起点的距离顺序报告固定装置。相反,顺序是随机的,您必须在回调中处理它。如果这不是问题所在,您可能需要在问题中添加一些代码。