[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);//取得目標的位置
}
}
接著在場景中新增一個目標,把目標指派給物件
設定完成後就可以執行看看效果如何囉!
avatar-img
68會員
126內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
程式輕鬆玩 的其他內容
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
Minimum Path Sum 給定一個矩陣,每個格子點代表經過的對應成本。 每回合可以往右移動一格或往下移動一格。 請問從起點左上角 走到 終點右下角的最小路徑成本總和是多少?
Thumbnail
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Thumbnail
上次我們完成用Unity 建完一張椅子,還有學習基本變數的應用,那我們就繼續寫更多的腳本來讓物體有更多的ㄅㄧㄢ #一般不會用Unity來建模啦,主要還是要靠其他3D軟體導入 ●Gravity Scale 重力預設為1,是造成物體下墜的主因,可以先調到0。 (Unity有支援負
Thumbnail
導航系統早已成為生活必備工具 , 無論外出旅行或出差工作 , 都全然需要著 然 科技在發達 , 始終沒有人生道路上的導航系統 , 來指引~ 我為何而來? 我的人生定位在哪裡? 下一步又該往哪裡發展? 所以多數人容易一步走錯就步步錯 , 也有人生是如履薄冰深怕走錯立即跌入深淵。 更
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
題目敘述 題目會給定一個指定高度和寬的方格版,還有一顆小球的起始位置,和最大移動步數。 小球每一步可以選擇向上、下、左、右移動一格,請問小球能走到方格版界外的路徑方法數總共有幾種? 方法數可能很大,題目要求,最後回傳答案時,先對10^9+7做除法取餘數再回傳。 題目的原文敘述 約束條件
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
Minimum Path Sum 給定一個矩陣,每個格子點代表經過的對應成本。 每回合可以往右移動一格或往下移動一格。 請問從起點左上角 走到 終點右下角的最小路徑成本總和是多少?
Thumbnail
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Thumbnail
上次我們完成用Unity 建完一張椅子,還有學習基本變數的應用,那我們就繼續寫更多的腳本來讓物體有更多的ㄅㄧㄢ #一般不會用Unity來建模啦,主要還是要靠其他3D軟體導入 ●Gravity Scale 重力預設為1,是造成物體下墜的主因,可以先調到0。 (Unity有支援負
Thumbnail
導航系統早已成為生活必備工具 , 無論外出旅行或出差工作 , 都全然需要著 然 科技在發達 , 始終沒有人生道路上的導航系統 , 來指引~ 我為何而來? 我的人生定位在哪裡? 下一步又該往哪裡發展? 所以多數人容易一步走錯就步步錯 , 也有人生是如履薄冰深怕走錯立即跌入深淵。 更
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
題目敘述 題目會給定一個指定高度和寬的方格版,還有一顆小球的起始位置,和最大移動步數。 小球每一步可以選擇向上、下、左、右移動一格,請問小球能走到方格版界外的路徑方法數總共有幾種? 方法數可能很大,題目要求,最後回傳答案時,先對10^9+7做除法取餘數再回傳。 題目的原文敘述 約束條件