自适应路径 - Astar修改

时间:2017-08-21 12:44:51

标签: c++ performance c++11 a-star

我想调整Astar算法找到的路径,因此使用此路径的对象可以对变化做出适当的反应(例如目标移动)。我也尝试尽可能高效地完成这项工作,如果可能的话,不要重新计算整个路径。

路径指控看起来有些熟悉:

class Astar
{
   void findPath(std::vector<Node> &path)
   {
      std::vector<Node> open;
      std::vector<Node> closed;
      //find path
   }
}

class Foo
{
   std::vector<Node> path;
   Astar astar;

   void findPath()
   {
      astar.findPath(path);
   }
}

我考虑通过在对象移动时在当前路径的末尾添加新的std::vector<Node> path来修饰路径Node。然而,这将是有问题的,因为如果目标正在关闭,则修改的路径将需要在他旁边移动,移动到旧目标的位置然后开始向后移动到新位置。或者我想到每5-10次移动重新计算路径。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

此类问题的标准方法是navmeshes,其中包含大量预先计算的信息以快速更新。有关详细信息,请参阅示例here

关于星际导航on the gamedev stackexchange还有许多有用的问题。