我目前正在研究遊戲項目的尋路部分。烘烤我的導航網格時出現問題 - 它沒有涵蓋我想要步行的所有區域。Unity 3D導航網格烘烤沒有覆蓋所有區域
這是問題的一個形象:
我怎麼能覆蓋一個導航網格的整個區域,因此是代理人可步行?
我目前正在研究遊戲項目的尋路部分。烘烤我的導航網格時出現問題 - 它沒有涵蓋我想要步行的所有區域。Unity 3D導航網格烘烤沒有覆蓋所有區域
這是問題的一個形象:
我怎麼能覆蓋一個導航網格的整個區域,因此是代理人可步行?
不幸的是,Unity的基於導航網格的導航系統只能用於與y軸對齊的地形 - 也就是說,世界的y軸用作向上矢量,並且使用地形的斜率計算作爲參考。
只有你的球形物體的頂部被認爲是可行走的原因是因爲如果你認爲y軸是向上的矢量,那麼其餘的地形的斜率大於navmesh烘烤設置所允許的。
解決此問題的唯一方法是編寫自定義解決方案 - 但嘿,幸運的是not the first one to pose such a question。普遍接受的方法是使用具有自定義啓發式功能的A* algorithm(基於網格的頂點)來計算到目的地的最短路徑。
這裏的a good tutorial on how to implement A* in Unity,這將給你一個基本的理解,所以你可以計算出如何將算法應用到自身環繞的地形。如果你沒有計劃編寫你自己的解決方案,還有an existing A* asset for sale on the Unity Asset Store(免費版本也可用),這被認爲是Unity自己的導航系統的一個可靠的改進,並且可以適用於非垂直地形,如你的一些調整。
希望這會有所幫助!如果您有任何問題,請告訴我。