2016年7月15日 星期五

【Unity官方教學分享】NavMesh烘焙

網頁連結

如何開啟CC字幕?

Unity導航系統中的移動範圍,會依照NavMesh導航網格來決定,所以在讓物件移動前需要生成NavMesh,而在Unity中生成NavMesh是透過烘焙。
首先點擊Window -> Navigation開啟導航系統視窗開啟導航視窗後可以看到三個標籤,分別是ObjectBakeAreas
NavMesh烘焙 NavMesh Baking
在烘焙出NavMesh之前,我們必須告訴Unity那些物件是navigation static
被設定navigation static的物件,代表著它具有不能移動而且可以行走的特性,通常是地板、牆壁或障礙物。


1. 選取一個希望它有上述特性的物件,並選擇Object標籤。
NavMesh烘焙 NavMesh Baking
接著將Object標籤下的Navigation Static選項打勾,這樣就設定完成了。
NavMesh烘焙 NavMesh Baking
或是在檢視視窗下,點擊Static下拉選單,將Navigation Static選項打勾。

接著看到Object標籤下方兩個選項。
NavMesh烘焙 NavMesh Baking
Generate OffMeshLinks為分離網格連結的設定,這部分會在其他教學中做說明。
Navigation Area可以設定該物件屬於哪個區域,分別有WalkableNot WalkableJump,細節會在Areas標籤的部分做說明。

2. 接著是Areas標籤。
NavMesh烘焙 NavMesh Baking
Object標籤下設定過物件的Navigation Area後,可以在Areas標籤中設定各區域的Cost
而Cost數值代表著"該物件行走的難易度",例如Walkable預設為1,表示該物件是容易行走的,而Jump預設為2,代表它相對於Walkable,是比較難行走的物件,所以在計算路徑時,會優先選擇Walkable,之後才是Jump
開發者也可以在Areas標籤中自訂新的區域名稱和Cost,另外Not Walkable的Cost數值是不能調整的。

3. 最後是Bake標籤,可以調整NavMesh的參數。
NavMesh烘焙 NavMesh Baking
Agent Radius:含有Agent元件的物件半徑,判定是否接觸到牆壁、障礙物或目標,同時也會影響到某些路徑是否會成立。
Agent Height:含有Agent元件的物件高度,如果是有天花板的環境下,有條路徑可通行但天花板低於移動物件,還是會被視為不可通行。
Max Slope:決定斜坡的最大角度,低於此數值可以被視為路徑,超過則不可通行。
Step Height:決定高度差在多少數值內,會被視為相連路徑,超過則不可通行。

Generated Off Mesh Links下的兩個參數,這部分會在其他教學中做說明。

最後是進階設定參數Advanced
NavMesh烘焙 NavMesh Baking
Manual Voxel Size:決定生成NavMesh的像素大小,會影響生成出來的NavMesh精確度。
Min Region Area:決定最小面積,物件的面積小於此數值,不會被視為可移動的路徑。
Height Mesh:會儲存原始高度的資訊,但會影響效能與記憶體。

設定好參數就可以按下Bake按鈕生成NavMesh
NavMesh烘焙 NavMesh Baking
NavMesh可行走的區域會像上圖呈現藍色,選取右下角的Show NavMesh可以決定是否要顯示NavMesh
以上就是導航系統內可移動區域NavMesh的生成,這次就到這裡。

註:Object標籤下的Scene Filter,也就是場景過濾器,開發者可以在這裡選擇All(全物件)、Mesh Renderers(網格渲染)、Terrains(地圖),方便開發者檢視各類型的物件。
NavMesh烘焙 NavMesh Baking


沒有留言:

張貼留言

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...