(轉)Unity新功能動態烘焙 NavMesh之組件介紹


1. 如何使用NavMesh新組件

NavMesh的新組件一共有4個:

NavMeshSurface

NavMeshModifier

NavMeshModifierVolume

NavMeshLink

這4個新組件並不是在Unity5.6版本里面默認就有的,需要自己導入到工程中,下載->導入

接下來對4個組件逐個介紹

2.NavMesh Surface組件

 
 

(上圖使用NavMeshSurface組件將這片區域變成可走區域)

High-level NavMesh 最核心的組件

NavMeshSuface組件代表agent可以走的區域,定義世界中哪部分應該被bake成NavMesh 

一個場景中可以有多個NavMesh Surface組件

 
 

NavMeshSurface組件可以被加在任何游戲物體上,可以用來定義那些物體可以用來生成NavMesh(有了該組件后可以不需要設置物體Navigition static的靜態屬性,以前的靜態屬性只適用於editor模式,不適用於實時bake的特性)

參數介紹: 

Agent Type: 用來匹配NavMeshAgent

Collect Object: 定義哪些物體用來bake生成NavMesh 

All: 使用全部激活狀態的物體(無論是否是父子物體) 

 
 

Volume: 被體積盒包圍的物體,或者是包圍在內的物體的部分 

 
 

Children: 有NavMeshSurface組件的物體及其子物體 

 
 

Include Layers: 定義哪些層的物體要被bake

Use Geometry: 選擇使用網格或者碰撞體來bake 

Render Meshes - 使用Mesh Renderer 和 Terrains

Physics Colliders - 使用Colliders和Terrains(推薦)

Advanced:高級設置(一般默認就可以) 

Default Area: 默認生成區域類型

Override Voxel Size: 覆蓋默認的Voxel Size,體素尺寸,用來調整精度,場景比較精密的可以把該值調小,值越小精度越高,精度越高,bake越慢,該值與Tile Size共同影響bake的效果

Override Tile Size: 覆蓋默認的Tile Size,塊大小,默認是256voxel作為一塊,為了讓bake有較多平行與增加內存效率才有了此設置,在障礙物多的時候,可以將塊減小以提升運行效率。或者打算實時bake的時候,可以用更小的Tile Size來降低內存消耗 

 
 
 
 

Build Height Mesh: 不再被支持

其它說明: 

NavMesh Surface組件用來設置一片大范圍內要被bake的物體的信息,而用NavMeshModifer組件可以對這些物體逐個進行微調

如果物體身上有NavMesh Agent或者NavMesh Obstacle組件則不會被bake進去,會在bake的時候剔除他們,因為他們是來用NavMesh的,不是來建造這個NavMesh的

3.NavMesh Modifier組件

 
 

(上圖用NavMeshModifier定義某一小塊區域為Lava(岩漿)類型的區域)

NavMesh Modifier組件允許對一些要用來被NavMeshSurface組件bake的物體進行微調

NavMesh Modifier組件的作用效果包括其下的所有子物體

NavMesh Modifier組件可用於實時bake,且不需要static標志

參數說明:

Ignore From Build: 是否無視bake

Override Area Type:生成區域類型

Affected Agents: 針對某個agents的微調,比如可以選擇排除該agents的某些特定的障礙

4.NavMesh Modifier Volume 組件

 
 

(上圖用NavMesh Modifier Volume將門的一片區域設置為不可走)

NavMesh Modifier Volume與NavMesh Modifier差不多

前者作用於對體積盒包圍的所有物體(或物體的部分),后者只作用於自身及其子物體

參數說明: 

Size和Center:調整體積盒的大小位置,其它和NavMesh Modifier一樣

5.NavMesh Link 組件

NavMesh Link組件允許在兩個區域間創建一條可通行的通道

NavMesh Link組件對於連接兩個不同的NavMesh Surfaces是必須的

參數說明:

Agent Type: 哪種Agent才可以使用這個NavMesh Link

Start Point:開始點

End Point:結束點

Align Transform To Points: 將綁定該NavMesh Link組件的物體的Tranfrom屬性與Link匹配,位置移動到link的中心,方向也對着link的方向

Cost Modifier: 測試不出有什么用,默認即可,原文→(when the cost modifier value is non-negative the cost of moving over the NavMeshLink is equivalent to the cost modifier value times the Euclidean distance between NavMeshLink and points.)

Bidirectional: 勾上時線的方向為雙向,沒勾時只能start-to-end單向

Area Type: 區域類型

6. 將多個NavMesh Surfaces連接注意事項

 
 

可以使用多個 NavMesh Link連接多個NavMesh surfaces

Link和Sufaces都必須有相同的agent類型

Link的開始點和結束點都必須各種在一個surfaces內,兩個surfaces疊在一起會不清楚開始點或結束點連接放在哪個surface上

如果場景中已經有了Link,然后再添加NavMesh Surface的時候檢測會不會連接到不想連接的Surface

 
 
5人點贊
 
 


作者:懶_開果
鏈接:https://www.jianshu.com/p/c54ad92b1d76
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM