A*/A星/AStar演算法 視訊筆記,Unity程式碼實現
阿新 • • 發佈:2019-02-15
視訊來源:https://www.bilibili.com/video/av23095766?from=search&seid=5873495875101903731
程式碼來源:https://www.jianshu.com/p/22dfcca70064
平面劃分若干方塊,假設紅色是起點紫色是終點棕色為障礙物
從起點移動時,有8個方向
直線方向有前,後,左,右,每個直線方向的方格認為需要走10(或1)
斜線方向,左上,左下,右上,右下,每個斜線方向的方格,認為需要走14(或1.4)
因為正方形的斜邊是邊長的根號二倍,近似取1.4
直線10
斜線14
起點周圍的8個方格,都是我們可能移動的下一點。我們用一個變數 g 來存到下一點需要的距離。也就是10或者14
我們接下來估計一下到終點可能需要的距離的英文多少,從起點開始的8個方向我們任意選一個方向,作為下一個起點。
我們只算直線距離忽略障礙
從新的起點開始(假設我們選擇的是畫圓圈的這個地方),到終點的距離,只算直線就是8個方格,也就是80
同樣的方法我們算出其他幾個方格為起點時的距離
每個方格對應紅色值我們用變數h 來存
現在我們知道,
g 可能是10或者14
h 則需要我們去計算,可能是80120110等
用一個變數F = G + H,顯然F 就是紅色的起點部分經由某個方向到終點的估計距離,也就是下圖的紫色值
顯然90這個值最小,我們選擇下一步走到這裡來,忘掉前面的計算,再次對周圍8個方向進行上面的運算
顯然下一步我們就要走74這個方格了,繼續往下算,當然,當週圍8個方格中有障礙時,障礙方塊可以不要計算
最後我們的路徑就差不多是這樣了。