【问题标题】:Need some help with pathfinding! [closed]在寻路方面需要一些帮助! [关闭]
【发布时间】:2011-07-18 22:13:35
【问题描述】:

我正在制作一款益智游戏,需要一些寻路来引导选定的单位到达目的地。这是我第一次处理任何类型的寻路,所以我选择了对我来说最容易理解的 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

【问题讨论】:

标签: actionscript-3 path-finding


【解决方案1】:

placeNode()函数中,在当前节点已经在open list中的情况下,使用新的父节点提高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;
  }

这可能不是唯一的问题,但它似乎是潜在错误的根源。希望对您有所帮助。

【讨论】:

  • 感谢您的提醒!完全忘记了。虽然这不是解决方案:(但它肯定解决了未来的问题:)
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2010-12-04
  • 2021-06-26
相关资源
最近更新 更多