【问题标题】:LibGDX raycast does not collide with Box2D static objectLibGDX 光线投射不会与 Box2D 静态对象发生碰撞
【发布时间】:2021-05-22 13:24:48
【问题描述】:

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

现在我的问题是,光线投射似乎不会与 Box2D 世界中的静态物体发生碰撞

(这只是一个假设,静态主体是问题所在,因为它与动态主体配合得很好)

问题

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

我在libGDX wikiAPI 中找不到任何相关信息。

到目前为止我已经尝试过什么

我已经在敌人和玩家之间使用动态物体测试了光线投射 AI:

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

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

这里中间的静态物体没有被光线投射检测到。

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

【问题讨论】:

    标签: java libgdx box2d raycasting


    【解决方案1】:

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

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

    【讨论】:

    • 我确实假设报告将按照与起点的距离顺序。只有静止的物体似乎没有秩序是偶然的。感谢您的提示。它现在正在工作:)
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多