寻路需要一些帮助!

时间:2011-07-18 22:13:35

标签: actionscript-3 path-finding

我正在制作一个益智游戏,需要一些寻路来引导选定的单位到达目的地。这是我第一次处理任何类型的寻路,所以我选择了最容易理解的aStar方法。 (感谢这个精彩的页面http://www.policyalmanac.org/games/aStarTutorial.htm)。 我的确走了一条路,比我预期的还要多,但仍有一些小问题。

我可以写一个没有人会理解的长解释,但我上传了我的flash项目,你可以看到: http://www.martinowullems.com/pigsplode/pigsplode%20flash.html

选择一只猪,然后选择第二块瓷砖让它走到那里(不是底部的瓷砖,它们是错误的:P)。深色瓷砖是不可行的。红色瓷砖属于生成的路径。我似乎走在正确的轨道上,我感觉我只是犯了一个小错误。我觉得选择最佳节点(findNextNode函数)会有问题。

我一直在盯着代码太长时间而且没有取得任何进展。 我已经尝试过查看其他人的实现,但我总是很难理解其他人的工作。

非常感谢任何帮助,希望继续进行该项目!

我制作了一个wonderfl版本,所以你可以查看并摆弄代码: http://wonderfl.net/c/hRtO

1 个答案:

答案 0 :(得分:0)

placeNode()函数中,如果当前节点已经在打开列表中,则在使用新父节点改进G值时,不会更改父节点。

//if it is already on the open list - check if it is a better option
  if (node.G > parentnode.G + 10) {

    //recalculate
      node.parentNode = parentnode;      //add this line
      node.G = parentnode.G + 10;
      node.F = node.G + node.H;
  }

这可能不是唯一的问题,但它看起来像是潜在错误的根源。希望它有所帮助。