[Unity] 利用NavMesh 及 Nav Mesh Agent 實現導航功能

閱讀時間約 4 分鐘
遊戲裡面都會有導航系統,在Unity裡面就是利用NavMesh實現這個功能。
其實說是導航系統,NavMesh是建立導航系統的可移動範圍,再根據你的需求寫導航功能。

以下來實作:
首先建立一個Terrain、一個Cube及一個Cylinder,如紅圈裡的示範
接著設定個別物件,選定Cylinder後找到Navigation欄位裡的Object,如果找不到Navigation的話可以在Windows裡面找到。
首先需要把物件設定成Navigation Static,在Unity裡如果要烘焙可移動需的話需要先把物件設定成不可移動及可以行走的特性,像是牆壁或是階梯等等。
也可以在選取物件後在Inspector視窗裡的Static選取
Generate OffMeshLinkenerate OffMeshLink是分離移動區連結的設定,這邊先不介紹。
接著是Navigation Area,這裡有Walkable、NotWalkabe及Jump。我們先移動到Area標籤裡,可以看到以下畫面,這裡可以看到這三個有各自的Cost,Cost代表是行走的難易度,
Not Walkabe字面上當然是不能行走,可行走Walkable是1,需要跳躍的是Jump的2,所以在導航時會優先選優先度高的Walkable而不是Jump。
當然也可以依需求設定新的區域的優先度。
最後是Bake標籤,當設定都完成後就到Bake標籤,可以看到下面欄位分別表示:
Agent Radius:含Agent元件的物件半徑,判斷是否接觸牆壁、障礙物或目標,同時也會影響某些路徑是否成立。
Agent Height:含有Agent元件的物件高度,如果是有天花板的環境下,有條路徑可通行但天花板低於移動物件,還是會被視為不可通行。
Max Slope:決定斜坡的最大角度,低於此數值可以被視為路徑,超過則不可通行。
Step Height:決定高度差在多少數值內,會被視為相連路徑,超過則不可通行。
這裡的Generate Off Mesh Links也先不做介紹,接著是Advanceddvanced欄位,分別表示:
Manual Voxel Size:決定生成NavMesh的像素大小,會影響生成出來的NavMesh精確度。
Min Region Area:決定最小面積,物件的面積小於此數值,不會被視為可移動的路徑。
Height Mesh:會儲存原始高度的資訊,但會影響效能與記憶體。
設定好後就可以按下Bake烘焙NavMesh了,完成後會看到下圖,可行走區域會以藍色表示,畫面右下角可以選擇是否開始NavMesh。
接著就是導航部份了!!
不過由於這次準備時間錯開,不小心弄壞了,所以重新拉了幾個cube
這次的場景如下
首先把要導航的物件加進去,接著幫她加入Nav Mesh Agent這個component
參數說明
Agent Type:導航類型,可以設定多種導航的模式,可以在Navgation視窗中的Agent標籤裡設定
Base Offset:物件相對於Agent元件的位移
Speed:導航時的移動速度
Angular Speed:導航時的旋轉速度
Acceleration:導航時的最大加速度
Stopping Distance:與目標達到一定距離時停止導航
Auto Braking:是否自動剎車,避免到目標時超過目標
Radius:元件的半徑
Height:元件的高度
Quality:迴避障礙物的準確度
Priority:迴避優先度,優先度高的物件不會被優先度低的物件阻擋
Auto Traverse Off Mesh Link:是否要讓物件做Off Mesh Link分離移動區的移動
Auto Repath:如果原本的路徑失效是否要重新規畫路徑
Area Mask:選擇路經規劃區域
設定完成後新增一個script給他,這邊使用的是C#,內容如下
using UnityEngine;
using UnityEngine.AI;
public class NavToTarget : MonoBehaviour {
public Transform target;
public NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>();//取得物件的Agent元件
}
void Update()
{
agent.SetDestination(target.position);//取得目標的位置
}
}
接著在場景中新增一個目標,把目標指派給物件
設定完成後就可以執行看看效果如何囉!
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
57會員
116Content count
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
留言0
查看全部
發表第一個留言支持創作者!
程式輕鬆玩 的其他內容
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
Unity (美股代號:U)是一家以渲染實時3D為核心業務的公司。上次評價是 2023Q1財報,已經過了9-10個月,這次回頭來檢視2023Q4和全年的結果。簡單講結論的話就是:美好開年,掙扎結尾。公司大刀闊斧準備再度出發,但是否有效果還需要再觀察一陣子。
Thumbnail
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
這篇文章將會介紹第三人稱遊戲設計中,關於角色的建模與動畫的設計與製作。
Thumbnail
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
Thumbnail
這篇文章將會介紹 Unity 怎麼處理動畫,從控制中心到每個獨立的動畫,都可以在這篇文章中找到,在這一周的時間內,我會從編輯器講述到實際應用。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
Thumbnail
本文章將介紹回傳及無類型回傳在變數與函數中的用法,以及他們比較常使用的方式。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
Unity (美股代號:U)是一家以渲染實時3D為核心業務的公司。上次評價是 2023Q1財報,已經過了9-10個月,這次回頭來檢視2023Q4和全年的結果。簡單講結論的話就是:美好開年,掙扎結尾。公司大刀闊斧準備再度出發,但是否有效果還需要再觀察一陣子。
Thumbnail
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
這篇文章將會介紹第三人稱遊戲設計中,關於角色的建模與動畫的設計與製作。
Thumbnail
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
Thumbnail
這篇文章將會介紹 Unity 怎麼處理動畫,從控制中心到每個獨立的動畫,都可以在這篇文章中找到,在這一周的時間內,我會從編輯器講述到實際應用。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
Thumbnail
本文章將介紹回傳及無類型回傳在變數與函數中的用法,以及他們比較常使用的方式。