要做尋路,然後看了看laya 官方的例子,感覺看的一臉懵逼,早了半天的api 也沒找到在哪有尋路的,最後一看程式碼,原來是用的github上的A星方案 https://github.com/bgrins/javascript-astar
這就尷尬了,,然後研究了一下,果然還是要unity支援,匯出烘焙過的地圖資訊,在網上找了一些方案,然後自己也做了一下修改和調整,現在給大家發出來,(當做參考用 。。。)
需要unity 外掛 A* (AstarPathfindingProject )
然後配置好地圖,然後烘焙
然後 通過AstartExpLayaTool /exp json 匯出地圖的json資訊 (json資訊 已自動複製到 剪下板中了)
在通過laya 去呼叫
Laya 這邊 將json 資訊給存起來然後呼叫
通過github 把 astar.js 給下載下來,然後放到專案的libs下,編寫 .d.ts 輔助檔案
declare class astar { /** * Perform an A* Search on a graph given a start and end node. * @param {Graph} graph * @param {GridNode} start * @param {GridNode} end * @param {Object} [options] * @param {bool} [options.closest] Specifies whether to return the path to the closest node if the target is unreachable. * @param {Function} [options.heuristic] Heuristic function (see * astar.heuristics). */ static search(graph, start, end, options?); cleanNode(node); } declare class Graph { /** * A graph memory structure * @param {Array} gridIn 2D array of input weights * @param {Object} [options] * @param {bool} [options.diagonal] Specifies whether diagonal moves are allowed */ constructor(gridIn, options?) grid: any; } declare class GridNode { x; y; weight; constructor(x?, y?, weight?) }
然後編寫自己尋路程式碼就行了
備註:此方案當前效能偏低,將座標對應矩陣部分有問題,但作為一個參考還是可以的
laya地址 https://gitee.com/eryuefeng/laya-astar-pathfinding