之前我們一起學習瞭如何使用Navmesh組件來實現最基本的角色自動尋路。今天我們再繼續深入探索Navigation組件的高級功能。在本文中,你將瞭解到如何在兩個隔離層自動生成尋路網格?如何手動指定尋路網格的路線?以及尋路網格層的應用。
• 隔離層自動生成尋路網格
• (源碼scene1.unity)
• 1.創建Plane實例P1,P2,兩者之間出現一條鴻溝。直接控制角色位移是無法通過的。
• 2.打開Navigation窗口,分別選中P1,P2,分別設置Navigation Static 和OffMeshLink Generatic
• 3.保存場景,點擊場景烘焙按鈕Bake。結束後我們可以看到P1,P2除了自身生產尋路網格外,它們直接還生成了連接紐帶。
• 4.添加角色模型Solder,爲其添加NavMeshAgent(Component->Navigation->NavMeshAgent)
5.給Solder添加PlayerController腳本
手動指定尋路網格方向
1.scene1.unity的基礎上,將P1,P2的OffMeshLink Generatic去除
2.在P1上新建一個空的GameObject Start,P2上新建一個空的GameObject End
3.選中start,爲它添加Off Mesh Link組件Component->Navigation->OffMeshLink
4.設置Off Mesh Link組件的屬性,Start Point 爲 start,End Point爲end
5.烘焙場景。我們可以看到有一條紐帶從start指向end
點擊地圖,可以看到角色如果要跨越P1和P2,一定是沿着我們手動創建的路徑
• 導航網格障礙物 NavmeshObstacle
之前我們都是用固定的物體作爲障礙物,然後烘焙場景。Unity還提供了動態的障礙物。任何一個GameObject都可以添加Navmesh Obstacle組件,變成一個障礙物。具體步驟是Component->Navigation->NavmeshObstacle.它有兩個屬性:半徑和高度,可以設置跟你的物品差不多的體積大小。