2011-06-20 53 views

回答

3

电网虽然A *是一种矫枉过正的时候有没有障碍,你还不如用它,因为我在AS3写了一个库,它:http://www.newarteest.com/flash/astar.html


编辑:如果你有任何小于100%肯定寻路就永远不会有障碍,那么我还是推荐A *因为这样可以给你呢e最具灵活性,但在特定情况下,您可以非常容易地找到没有障碍物的路径,因为您只能水平移动一次,然后垂直移动(或以其他方式移动),而不是斜向移动。

首先减去位置的x和y分量,以确定哪条路更长并开始沿那个方向移动。然后,当物体在该轴上的相同位置时,切换到另一个方向移动。

根据您的需要,您可以轻松地构建循环或递归函数,以便在遍历它之前找到整个路径,但是可能更简单的方法是在不知道整个路径的情况下以正确的方向移动对象。找到路径时,无论如何都需要循环遍历所有节点,这样可以避免必须遍历节点两次。

+0

我正在翻阅它,而我是as3的新手。我不明白第22行 - 公共静态函数go(xIni,yIni,xFin,yFin,lvlData):Array { - 数组部分做什么?不是一个函数,而不是一个数组?谢谢 – apscience

+0

这意味着它作为该函数的结果返回一个数组。具体来说,它是路径中的一个节点数组;您使用该数组的方式(在示例代码中演示)是循环遍历数组并按顺序移动到存储的位置。 – jhocking

+0

精湛,你的A *库只是工作得很好:)谢谢,就是我想要的。 – coderbanna