A*演算法之在U3d下實現簡單的自動尋路

1405048499729402發表於2019-02-08

演算法簡介:

A搜尋演算法俗稱A星演算法。A演算法是比較流行的啟發式搜尋演算法之一,被廣泛應用於路徑優化領域[。它的獨特之處是檢查最短路徑中每個可能的節點時引入了全域性資訊,對當前節點距終點的距離做出估計,並作為評價該節點處於最短路線上的可能性的量度。[1] – 百度百科

  通俗點說,就是在起點與目標點之中找出一條可通行的最短路線。常見於各類RPG遊戲中的自動尋路功能:點選某個任務,人物會自動移動過去;點選地圖上某個點,人物也會照著顯示出來(或者隱藏了)的路線前進。玩過LoL,紅色警戒等類似遊戲的小夥伴都知道,右擊小地圖的某一處,小地圖會出現一條從當前位置到所點選位置的紅色路線,然後英雄就會隨著這條路線一直走到目標點。這種功能,就是A*演算法的在遊戲中的常見應用之處。

場景佈置:

1 佈置地面:場景中新建一個Plane(地面)重置一下Transform,然後將Scale拉伸至20倍(此時地面的大小是200×200),地面是不帶y座標的,即只有xz平面,此時平面上左下角座標點是(-100,-100),右上角是(100,100)這個很重要,後面的判斷座標點是否越界(超出地面範圍)就是依據這個地面的大小和座標

2 佈置障礙物:新建一個空物體Bars,在Bars下建立一個cube,將cube隨便拉伸做成一堵牆,然後複製,擺放到場景上各個位置。

3 建立玩家:場景中新建一個Capsule(為了好控制,就選用膠囊體了),取名為Player,為它掛上Character Controller角色控制器。

4 路線:新建一個Sphere球,塗成紅色,改名叫Way,解除安裝掉Collider(一定要解除安裝),做成預製體,用來表示計算出來的路線上的每一點。新建一個空物體Ways,用來儲存路線

5 層級設定:為了程式碼中好檢測,為地面Plane設立一個單獨的層Plane,層級號位9.所有障礙物層級為Bars,層級號為8

更多unity2018的功能介紹請到paws3d學習中心查詢。


相關文章