最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity-導(dǎo)航區(qū)域和成本

2021-03-11 08:49 作者:unity_某某師_高錦錦  | 我要投稿

導(dǎo)航區(qū)域 (Navigation Areas)?定義了穿越特定區(qū)域的難度,在尋路期間將優(yōu)先選擇成本較低的區(qū)域。此外,每個導(dǎo)航網(wǎng)格代理 (NavMesh Agent) 都有一個_區(qū)域遮罩 (Area Mask)_,可用于指定代理可以移動的區(qū)域。

在上面的示例中,區(qū)域類型用于兩種常見用例:

  • Water?區(qū)域:通過分配更高的成本使該區(qū)域的行走成本更高,從而應(yīng)對在淺水上行走速度較慢的情況。

  • Door?區(qū)域:讓該區(qū)域可由特定角色訪問,從而創(chuàng)建人類可以但僵尸不能穿過門的情況。

可將區(qū)域類型分配給導(dǎo)航網(wǎng)格烘焙中包含的每個對象,此外,每個網(wǎng)格外鏈接都有一個屬性用于指定區(qū)域類型。

尋路成本

簡而言之,通過成本可以控制尋路器 (pathfinder) 在尋路時(shí)優(yōu)先選擇的區(qū)域。例如,如果將某個區(qū)域的成本設(shè)置為 3.0,則意味著跨越該區(qū)域的行程將是其他替代路線的三倍。

要完全了解成本的作用,讓我們來看看尋路器的工作原理。

在尋路期間訪問的節(jié)點(diǎn)和鏈接。

Unity 使用 A* 計(jì)算導(dǎo)航網(wǎng)格上的最短路徑。A* 適用于具有連接節(jié)點(diǎn)的圖形。算法從距離路徑起點(diǎn)最近的節(jié)點(diǎn)開始訪問連接節(jié)點(diǎn),直至到達(dá)目標(biāo)。

由于 Unity 導(dǎo)航表示形式為多邊形網(wǎng)格,因此尋路器首先要做的是在每個多邊形上放置一個點(diǎn),這便是節(jié)點(diǎn)的位置。隨后將計(jì)算這些節(jié)點(diǎn)之間的最短路徑。

上圖中黃色的點(diǎn)和線顯示了節(jié)點(diǎn)和鏈接在導(dǎo)航網(wǎng)格上的分布情況,以及在 A* 期間遍歷這些節(jié)點(diǎn)和鏈接的順序。

在兩個節(jié)點(diǎn)之間移動的成本取決于行進(jìn)距離以及與該鏈接下的多邊形的區(qū)域類型相關(guān)聯(lián)的成本,即_距離 * 成本_。實(shí)際上,這意味著,如果一個區(qū)域的成本為 2.0,則此類多邊形的距離將顯示為兩倍。A* 算法要求所有成本必須大于 1.0。

成本對最終路徑的影響可能難以調(diào)整,尤其是對于較長的路徑。使用抵達(dá)成本的最佳方式是將其視為提示。例如,如果您希望代理不要經(jīng)常使用網(wǎng)格外鏈接,可增加這些鏈接的成本。但是,調(diào)整代理偏好在人行道上行走的行為可能存在挑戰(zhàn)性。

在某些關(guān)卡中,您可能會注意到的另一個現(xiàn)象是尋路器并不總是選擇最短的路徑。此現(xiàn)象的原因在于節(jié)點(diǎn)的放置方式。在以下場合中,該現(xiàn)象可能會很明顯:大型開放區(qū)域與微小障礙物相鄰,從而造成導(dǎo)航網(wǎng)格具有非常大和非常小的多邊形。在這種情況下,大型多邊形上的節(jié)點(diǎn)可能放置在大型多邊形的任何位置,從尋路器的角度看起來好像是繞行道。

可在?Areas?選項(xiàng)卡中設(shè)置每種_區(qū)域類型_的_成本_,也可使用腳本根據(jù)每個代理覆蓋這些設(shè)置。

區(qū)域類型

應(yīng)在?Navigation 窗口_的?Areas_ 選項(xiàng)卡中指定區(qū)域類型。此處提供了 29 個自定義類型和 3 個內(nèi)置類型:_Walkable、Not Walkable_ 和?Jump。

  • Walkable?是一種可行走的通用區(qū)域類型。

  • Not Walkable?是一種禁止導(dǎo)航的通用區(qū)域類型。如果希望將某個對象標(biāo)記為障礙物,但不將導(dǎo)航網(wǎng)格置于其上,則可使用該類型。

  • Jump?是分配給所有自動生成的網(wǎng)格外鏈接的區(qū)域類型。

如果不同區(qū)域類型的多個對象重疊,則生成的導(dǎo)航網(wǎng)格區(qū)域類型通常是索引最高的類型。但有一個例外:_Not Walkable_ 始終優(yōu)先。如果需要阻擋某個區(qū)域,此類型可能會有用。

區(qū)域遮罩 (Area Mask)

每個代理都有一個_區(qū)域遮罩 (Area Mask)_,用于描述代理在導(dǎo)航時(shí)可使用的區(qū)域??稍诖韺傩灾性O(shè)置區(qū)域遮罩,也可在運(yùn)行時(shí)使用腳本來操作位掩碼。

當(dāng)您希望只有某些類型的角色才能穿過某個區(qū)域時(shí),區(qū)域遮罩非常有用。例如,在僵尸逃避游戲中,可使用?Door?區(qū)域類型來標(biāo)記每個門下方的區(qū)域,并從僵尸角色的 Area Mask 中取消選中 Door 區(qū)域。



Unity-導(dǎo)航區(qū)域和成本的評論 (共 條)

分享到微博請遵守國家法律
长葛市| 克东县| 连山| 大名县| 稻城县| 绥滨县| 莎车县| 平舆县| 长岭县| 宁陵县| 买车| 柳林县| 湖北省| 巴林左旗| 银川市| 武乡县| 闵行区| 古丈县| 咸丰县| 惠州市| 安丘市| 临泽县| 景泰县| 湟中县| 盘山县| 沙河市| 杭锦后旗| 涡阳县| 合川市| 永吉县| 温泉县| 班玛县| 望谟县| 聊城市| 永和县| 宣威市| 池州市| 偏关县| 广水市| 镇原县| 连城县|