1. 程式人生 > >A*/A星/AStar演算法 視訊筆記,Unity程式碼實現

A*/A星/AStar演算法 視訊筆記,Unity程式碼實現

視訊來源: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個方格,都是我們可能移動的下一點。我們用一個變數

來存到下一點需要的距離。也就是10或者14

我們接下來估計一下到終點可能需要的距離的英文多少,從起點開始的8個方向我們任意選一個方向,作為下一個起點。

我們只算直線距離忽略障礙

從新的起點開始(假設我們選擇的是畫圓圈的這個地方),到終點的距離,只算直線就是8個方格,也就是80

同樣的方法我們算出其他幾個方格為起點時的距離

每個方格對應紅色值我們用變數h 來存 

現在我們知道,

g 可能是10或者14

h 則需要我們去計算,可能是80120110等

用一個變數F = G + H,顯然F 就是紅色的起點部分經由某個方向到終點的估計距離,也就是下圖的紫色值

顯然90這個值最小,我們選擇下一步走到這裡來,忘掉前面的計算,再次對周圍8個方向進行上面的運算

顯然下一步我們就要走74這個方格了,繼續往下算,當然,當週圍8個方格中有障礙時,障礙方塊可以不要計算

最後我們的路徑就差不多是這樣了。