我目前正在用 c++ 在 DirectX 引擎中制作游戏。我正在使用寻路来引导一支士兵军队到一个特定的位置。问题是我使用光线投射来查看我的路径上是否没有任何东西,这会减慢游戏的速度。有没有更好的寻路方法?
我的军队的移动也有问题。现在我使用士兵位置的平均数作为起点,这意味着所有士兵都需要先去那里,然后再移动到终点。有没有办法让他们在不去起点的情况下到达终点?
感谢您的帮助。
你试过像A-Star这样的东西吗? 通过节点或地图的某种二维数组表示进行导航? 写得好,它可能更快,也更容易用作业(多线程)。
如果你有一个士兵,他在 A 位置,需要到达 B。只需计算从 C(平均位置)到 B 的路径,即可获得从 A 到 B 的方向并进行某种插值。(没有这样做,也没有尝试过,但它可能会很好地工作!
在光线投射时,您是否对每个对象进行了命中测试?
当你有很多物体和士兵时,这可能会非常昂贵。一种常见的解决方案是将你的世界划分为方形网格单元,并将每个对象放在该网格的对象列表中。
然后,你画一条从士兵到目的地的假想线,并检查每个单元格你需要测试的对象。这样,您将仅评估靠近直线路径的对象,而忽略所有其他对象。