Unity多單位戰鬥尋路問題的一種解決辦法

瘋光無線發表於2014-10-18

Unity多單位戰鬥尋路問題的一種解決辦法

Unity提供了NavMesh 導航元件

 

NavMesh是在實踐中通用性最好的一種導航方式,但是Unity的實現並沒有完全提供一個開放自由的API。

主要的麻煩是:

1.不能脫離Editor生成NavMesh。

2.NavMesh資訊儲存在場景中,必須隨場景載入。

 

他的使用方式主要是在Editor階段設定障礙關係。

NavMeshAgent 作為移動單位來尋路

NavMeshObstacle 作為動態障礙

NavMeshAgent和NavMeshObstacle作為障礙預設都是採用了一種像物理系統的方式去繞開,預設表現並不好

 

過去在我們的實踐中還有一個新的問題

3. NavMeshObstacle障礙是用碰撞圓柱體硬擠,並沒有影響路徑。有障礙的地方其他單位是硬擠過去,效果很不好。

 

一直以來這些問題讓這個NavMesh系統有一些雞肋。

 

unity某個版本給NavMeshObstacle 增加了一個選項

意義非常重大,可惜的是我並沒有看到資料介紹他,偶然才發現他的意義。

 

這個勾選上帶來的意義是

執行中可以實時計算navmesh

這樣的修改才可以影響尋路系統,實現停止的單位影響其他單位的路徑。

 

問題2 和 問題3都可以一定程度上的解決

 

經實驗,這個功能的範圍始終是個矩形。

與模型無關,尺寸取得是模型的邊界。

無論什麼形狀的模型,都取他邊界的矩形。可以旋轉。

相關文章