Unity多單位戰鬥尋路問題的一種解決辦法
Unity提供了NavMesh 導航元件
NavMesh是在實踐中通用性最好的一種導航方式,但是Unity的實現並沒有完全提供一個開放自由的API。
主要的麻煩是:
1.不能脫離Editor生成NavMesh。
2.NavMesh資訊儲存在場景中,必須隨場景載入。
他的使用方式主要是在Editor階段設定障礙關係。
NavMeshAgent 作為移動單位來尋路
NavMeshObstacle 作為動態障礙
NavMeshAgent和NavMeshObstacle作為障礙預設都是採用了一種像物理系統的方式去繞開,預設表現並不好
過去在我們的實踐中還有一個新的問題
3. NavMeshObstacle障礙是用碰撞圓柱體硬擠,並沒有影響路徑。有障礙的地方其他單位是硬擠過去,效果很不好。
一直以來這些問題讓這個NavMesh系統有一些雞肋。
unity某個版本給NavMeshObstacle 增加了一個選項
意義非常重大,可惜的是我並沒有看到資料介紹他,偶然才發現他的意義。
這個勾選上帶來的意義是
執行中可以實時計算navmesh
這樣的修改才可以影響尋路系統,實現停止的單位影響其他單位的路徑。
問題2 和 問題3都可以一定程度上的解決
經實驗,這個功能的範圍始終是個矩形。
與模型無關,尺寸取得是模型的邊界。
無論什麼形狀的模型,都取他邊界的矩形。可以旋轉。