Unity-導(dǎo)航和尋路

導(dǎo)航系統(tǒng)允許使用從場(chǎng)景幾何體自動(dòng)創(chuàng)建的導(dǎo)航網(wǎng)格來(lái)創(chuàng)建可在游戲世界中智能移動(dòng)的角色。動(dòng)態(tài)障礙物可讓您在運(yùn)行時(shí)更改角色的導(dǎo)航,而網(wǎng)格外鏈接 (Off-Mesh Link) 可讓您構(gòu)建特定動(dòng)作,如打開(kāi)門或從窗臺(tái)跳下。本部分將詳細(xì)介紹 Unity 的導(dǎo)航系統(tǒng)和尋路系統(tǒng)。

導(dǎo)航系統(tǒng)可讓您創(chuàng)建能夠在游戲世界中導(dǎo)航的角色。該系統(tǒng)讓角色能夠理解自身需要走樓梯才能到達(dá)二樓或跳過(guò)溝渠。Unity 導(dǎo)航網(wǎng)格 (NavMesh) 系統(tǒng)包含以下部分:
導(dǎo)航網(wǎng)格(即 Navigation Mesh,縮寫(xiě)為 NavMesh)是一種數(shù)據(jù)結(jié)構(gòu),用于描述游戲世界的可行走表面,并允許在游戲世界中尋找從一個(gè)可行走位置到另一個(gè)可行走位置的路徑。該數(shù)據(jù)結(jié)構(gòu)是從關(guān)卡幾何體自動(dòng)構(gòu)建或烘焙的。
導(dǎo)航網(wǎng)格代理 (NavMesh Agent)?組件可幫助您創(chuàng)建在朝目標(biāo)移動(dòng)時(shí)能夠彼此避開(kāi)的角色。代理使用導(dǎo)航網(wǎng)格來(lái)推斷游戲世界,并知道如何避開(kāi)彼此以及移動(dòng)的障礙物。
網(wǎng)格外鏈接 (Off-Mesh Link)?組件允許您合并無(wú)法使用可行走表面來(lái)表示的導(dǎo)航捷徑。例如,跳過(guò)溝渠或圍欄,或在通過(guò)門之前打開(kāi)門,全都可以描述為網(wǎng)格外鏈接。
導(dǎo)航網(wǎng)格障礙物 (NavMesh Obstacle)?組件可用于描述代理在世界中導(dǎo)航時(shí)應(yīng)避開(kāi)的移動(dòng)障礙物。由物理系統(tǒng)控制的木桶或板條箱便是障礙物的典型例子。障礙物正在移動(dòng)時(shí),代理將盡力避開(kāi)它,但是障礙物一旦變?yōu)殪o止?fàn)顟B(tài),便會(huì)在導(dǎo)航網(wǎng)格中雕刻一個(gè)孔,從而使代理能夠改變自己的路徑來(lái)繞過(guò)它,或者如果靜止的障礙物阻擋了路徑,則代理可尋找其他不同的路線。