亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity如何實現自帶尋路導航系統

發布時間:2022-03-04 11:39:21 來源:億速云 閱讀:321 作者:小新 欄目:開發技術

小編給大家分享一下unity如何實現自帶尋路導航系統,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、介紹

unity如何實現自帶尋路導航系統

unity官方文檔:

導航網格(即 Navigation Mesh,縮寫為 NavMesh)是一種數據結構,用于描述游戲世界的可行走表面,并允許在游戲世界中尋找從一個可行走位置到另一個可行走位置的路徑。該數據結構是從關卡幾何體自動構建或烘焙的。

我們可以這么理解:它是unity官方自帶的一種尋路系統。我們可以通過它來制作簡單的尋路,比如可以制作點擊某個位置,讓角色自動的繞開障礙走到目標點的效果,比如可以制作敵人AI,讓它可以通過NavMesh繞開障礙追擊我方單位。甚至可以在NavMesh中設置傳送門,跳躍的起點落點,讓這些效果也參與尋路的計算,成功計算出導航的捷徑。

二、簡單使用介紹

簡單搭一個場景,創建player和target
//藍–Player 紅–Target

unity如何實現自帶尋路導航系統

點擊window–windows–Navigation

在Player身上掛載Nav Mesh Agent組件
導航網格代理 (NavMesh Agent) 組件可幫助您創建在朝目標移動時能夠彼此避開的角色。代理使用導航網格來推斷游戲世界,并知道如何避開彼此以及移動的障礙物。

unity如何實現自帶尋路導航系統

點擊地面cube,點擊Static旁邊小箭頭,設置為Navigation Static

unity如何實現自帶尋路導航系統

點擊Navigation,點擊Bake

unity如何實現自帶尋路導航系統

可以看到場景中物體可以移動的敵方被烘焙成藍色

unity如何實現自帶尋路導航系統

如果此處未烘焙成功,首先檢查是否將地面設置成Static
再看Scene窗口Gizmos設置,或許是已經烘焙成功了但是沒有顯示

unity如何實現自帶尋路導航系統

寫一個簡單的腳本掛載在Player小球身上,告訴它它的目標點在哪

獲取到Agent組件,通過agent.destination設置目標點,記得將目標點的藍色方塊拖拽進腳本

using UnityEngine;
using UnityEngine.AI;

public class Player : MonoBehaviour
{
 private NavMeshAgent agent;
 public Transform target;

 void Start()
 {
  agent = GetComponent<NavMeshAgent>();
  agent.destination = target.position;
 }
}

這樣的話就實現了一個簡單的尋路小demo

三、功能詳細介紹(unity2019.4)

導航網格代理 (NavMesh Agent)
unity如何實現自帶尋路導航系統

Agent Type 來自Navigation,可以設置多個不同的Type。
==Base offset ==碰撞圓柱體相對于變換軸心點的偏移。
Steering
Speed 最大移動速度(以世界單位/秒表示)。
Angular Speed 最大旋轉速度(度/秒)。
Acceleration 最大加速度(以世界單位/平方秒表示)。
Stopping distance 當靠近目標位置的距離達到此值時,代理將停止。
Auto Braking 啟用此屬性后,代理在到達目標時將減速。對于巡邏等行為(這種情況下,代理應在多個點之間平滑移動)應禁用此屬性

Obstacle Avoidance
Radius 代理的半徑,用于計算障礙物與其他代理之間的碰撞。
Height 代理通過頭頂障礙物時所需的高度間隙。
Quality 障礙躲避質量。有五個選項從None到High Quality,如果擁有大量代理,則可以通過降低障礙躲避質量來節省 CPU 時間。如果將躲避設置為None,則只會解析碰撞,而不會嘗試主動躲避其他代理和障礙物。
Priority 執行避障時,此代理將忽略優先級較低的代理。該值應在 0–99 范圍內,其中較低的數字表示較高的優先級。

Path Finding
Auto Traverse OffMesh Link 設置為 true 可自動遍歷網格外鏈接 (Off-Mesh Link)。如果要使用動畫或某種特定方式遍歷網格外鏈接,則應關閉此功能。
Auto Repath 啟用此屬性后,代理將在到達部分路徑末尾時嘗試再次尋路。當沒有到達目標的路徑時,將生成一條部分路徑通向與目標最近的可達位置。
Area Mask Area Mask 描述了代理在尋路時將考慮的區域類型。在準備網格進行導航網格烘焙時,可設置每個網格區域類型。例如,可將樓梯標記為特殊區域類型,并禁止某些角色類型使用樓梯。(比如,我想讓A可以爬樓梯,B不可以爬,就可以調整Area Mask做到此效果)

導航網格障礙物 (NavMesh Obstacle)

unity如何實現自帶尋路導航系統

Shape 可選Capsule或者Box決定障礙的形狀
選Box:
Center 定障礙位置
Size 定障礙大小
選Capsule
Center 定障礙位置
Radius 定障礙半徑
Height 膠囊體的高度

Carve
勾選 Carve 復選框后,導航網格障礙物會在導航網格中創建一個孔。
Move Threshold 當導航網格障礙物的移動距離超過 Move Threshold 設置的值時,Unity 會將其視為移動狀態。使用此屬性可設置該閾值距離來更新移動的雕孔。
Time To Stationary 將障礙物視為靜止狀態所需等候的時間(以秒為單位)。
Carve Only Stationary 啟用此屬性后,只有在靜止狀態時才會雕刻障礙物

考慮到性能因素和本身導航的局限性,需要多進行實踐來調整具體使用的參數。

網格外鏈接 (Off Mesh Link)

unity如何實現自帶尋路導航系統

unity如何實現自帶尋路導航系統

Start 描述網格外鏈接起始位置的對象。
End 描述網格外鏈接起始位置的對象。
Cost Override 如果值為正,則在計算處理路徑請求的路徑成本時使用該值。否則,使用默認成本(此游戲對象所屬區域的成本)。如果 Cost Override 設置為值 3.0,則在網格外鏈接上移動的成本將是在默認導航網格區域上移動相同距離的成本的三倍。如果希望讓代理通常優先選擇步行,但當步行距離明顯更長時使用網格外鏈接,則 Cost Override 設置將變得有用。
Bi-Directional 如果啟用此屬性,則可以在任一方向上遍歷鏈接。否則,只能按照從 Start 到 End 的方向遍歷鏈接。
==Activated ==指定尋路器 (pathfinder) 是否將使用此鏈接(如果將此屬性設置為 false,則將忽略它)。
Auto Update Positions 如果啟用此屬性,當端點移動時,網格外鏈接將重新連接到導航網格。如果禁用,即使移動了端點,鏈接也將保持在其起始位置。
Navigation Area 描述鏈接的導航區域類型。該區域類型允許您對相似區域類型應用常見的遍歷成本,并防止某些角色根據代理的區域遮罩 (Area Mask) 訪問網格外鏈接。

Bake頁面

unity如何實現自帶尋路導航系統
可以設置Player的導航高度,半徑,可上的樓梯高度,斜坡角度

Generated Off Mesh Links
烘焙的時候自動構成,上跳和下躍的網格外鏈接

注意:

掉下鏈接的生成由 Drop Height 參數控制。該參數可控制將要連接的最高掉落高度,將值設置為 0 將禁用生成。
定義掉下鏈接的軌跡時應使水平行程 (A) 為:2agentRadius + 4voxelSize。即,掉落將剛好落在平臺的邊緣之外。此外,垂直行程 (B) 需要大于烘焙設置的 Step Height(否則只會走下平臺)并小于 Drop Height。應按體素大小進行調整,確保在體素化期間的任何舍入誤差都不會阻止生成鏈接。應將 Drop Height 的值設置得比在關卡中測量的值略大,使鏈接正確連接。

跳過鏈接的生成由 Jump Distance 參數控制。該參數可控制將要連接的最遠距離。將值設置為 0 將禁用生成。
定義跳過鏈接的軌跡時應使水平行程 &copy; 大于 2*agentRadius 且小于 Jump Distance。此外,著陸位置 (D) 不得超過距離起始位置關卡的 voxelSize

Areas頁

unity如何實現自帶尋路導航系統

可以創建不同的Areas,設置不同的Cost,讓角色對經過某些路線進行一個傾向。比如設置敵人雖然可以直接穿過毒氣抓到主角,但是因為毒氣的cost較高,可以讓敵人盡量繞過毒氣去抓主角,但是如果會繞的太遠的話,敵人還是會選擇穿過毒氣。

以上是“unity如何實現自帶尋路導航系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂南县| 讷河市| 盐城市| 雷州市| 永川市| 叶城县| 龙川县| 高邑县| 永城市| 广宗县| 云南省| 山西省| 遵化市| 渝北区| 隆林| 绍兴市| 寻乌县| 织金县| 乃东县| 永和县| 惠安县| 鄢陵县| 龙州县| 邵阳县| 怀化市| 绥棱县| 大连市| 芮城县| 萨迦县| 青海省| 梅州市| 桐乡市| 阿拉善右旗| 九龙城区| 波密县| 星子县| 土默特左旗| 贡嘎县| 宝应县| 石嘴山市| 始兴县|