我试图在libGDX中为2D游戏实现一个简单的人工智能。如果玩家在射程内,如果敌人能看到玩家,AI应该让敌人跟随该玩家。为了确定敌人是否能看到玩家,我使用了一个射线广播。
现在我的问题是,射线广播似乎没有与Box2D world中的静态物体发生碰撞。
(这只是一个假设,即静态车身是问题所在,因为它在动态车身中运行得很好)
问题
默认情况下,libGDX中的光线投射会与静态物体发生碰撞吗?还是有其他方法使光线投射物与静止物体发生碰撞?
到目前为止我尝试过的
我在敌人和玩家之间用一个动态的身体测试了射线投AI:
在这里,雷射AI的敌人(左上角的那个)没有向玩家移动(右下角),因为他们之间有一个动态的身体(另一个敌人在中间),这是正确地与光线投射的碰撞。
但是,如果我在敌人和玩家之间放置一个静态物体,光线投射器不会检测到静态体,而只会检测到动态体(应该比静态体更晚发现):
在此,光线投射无法检测到中间的静态体。
我还测试了如何在静态身体上使用setSleepingAllowed(false)
,以确保它不仅仅是睡眠。但这也没能解决问题。
发布于 2021-05-22 20:37:31
在box2d中,RayCasts应该与静态体发生碰撞,所以您的问题可能在其他地方。
请记住,光线广播回调并不是按照距离起点的顺序报告固定装置。相反,顺序是随机的,您必须在回调中处理这些问题。如果这不是问题所在,您可能需要向问题中添加一些代码。
https://stackoverflow.com/questions/67650011
复制相似问题