Unity 2d橫豎方向自動尋路

2021-10-02 04:42:07 字數 2668 閱讀 8413

不太懂自動尋路原理的,請先閱讀下面的鏈結內容,我自己看了後是受益匪淺,本片文章就是其中最基礎的dijkstra演算法。(dijkstra怎麼念?)

人工智慧: 自動尋路演算法實現(四、d、d*演算法)

正文:

要實現的功能是:在棋盤類的2d地形中,繞過障礙找到目的地,從a到b。如下圖:

先繪製地圖,已知地圖大小為 12x12,每個點的屬性為:x值、y值、是否有障礙、是否被檢測過、他的父系點。

建立點的類,命名point:

public

class

point

建立地圖:

point[

,] pointmap;

public

vector2int size;

void

unitmap()

}//新增障礙

for(

int i =

4; i <

8; i++

)for

(int i =

3; i <

8; i++

)for

(int j =

4; j <

10; j++

) pointmap[4,

9].barrier =

true

; pointmap[4,

10].barrier =

true

; pointmap[6,

3].barrier =

true

; pointmap[9,

7].barrier =

true

;}

設定起點和終點

point startpoint;

point endpoint;

void

unit_startpoint_and_endpoint()

建立暫時容納point的list,儲存即將向四方擴散的point,在進行擴散時,將這些點設定為擴散出來的點的父系,同時改變這些點的被檢測狀態open為false,避免下次擴散時重複。(point是點的意思)

再建立乙個list,來容納路徑點的x值和y值。

list waypointstem;

list vi_waypoints;

建立 尋找從a到b的路徑的方法。

void

findtheway()

//找到終點後,從終點開始往前推,將父系的x值y值依次壓入路徑vi_waypoints

num =0;

while

(lastwaypoint != startpoint && num <

200)

//結束

debug.

log(

"finded");

}//四方擴散找終點

point

circlewaypointtemtofindtarget

(int x_end,

int y_end)

}point wpleft =

null;if

(waypointstem[i]

.x -

1>=0)

}point wpup =

null;if

(waypointstem[i]

.y +

1< size.y)

}point wpdown =

null;if

(waypointstem[i]

.y -

1>=0)

}//若無終點,則將四面 無障礙 無重複的點壓入新的 waypointstem,並且設定好他們的父系

if(wpright!=

null

&& wpright.open ==

true

&& wpright.barrier ==

false)if

(wpleft!=

null

&& wpleft.open ==

true

&& wpleft.barrier ==

false)if

(wpup !=

null

&& wpup.open ==

true

&& wpup.barrier ==

false)if

(wpdown !=

null

&& wpdown.open ==

true

&& wpdown.barrier ==

false)}

//替換 waypointstem

waypointstem.

clear()

; waypointstem = waypointstemnew;

return

null;}

return

null

;}

結束*注:沒有對**進行檢測,可能會有些小錯誤。

Unity2D 渲染層級

渲染層級 camera 攝像機 depth 值越高物體越在上面 在同乙個camera中 sorting layer 越在下面的sorting layer 越在上面 例如 player 層物體顯示在default層物體的上面 最後 order in layer 誰的數值大,誰在上方 一般設計思路 第一...

Unity2D動畫繫結

這次做了乙個unity的2d動畫,記錄一下,怕下次忘了怎麼做。首先是先決條件,推薦使用unity2019.2或更高版本,安裝 2d animation 和 2d psd importer 包。官方文件 資源檔案需要 psb 格式,直接使用ps另存為psb格式就可以了。我是線在手機上隨便畫了乙個,然後...

unity2D關節筆記

distance joint 2d 距離關節 重複部分不重覆記錄 用來限制兩物體的距離,可以根據其物理特性做旋轉運動。擺錘 enable collision 被關節連線的兩個物體是否能相互碰撞。connected rigid body 附加關節的物體所要連線的另一物體。auto configure ...