欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

unity自帶尋路(導航)系統(tǒng) Nav Mesh導航網(wǎng)格

 更新時間:2021年11月17日 10:25:16   作者:akuojustdoit  
這篇文章主要為大家詳細介紹了unity自帶尋路(導航)系統(tǒng),Nav Mesh導航網(wǎng)格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了unity自帶尋路(導航)系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、介紹

unity官方文檔:

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

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

二、簡單使用介紹

簡單搭一個場景,創(chuàng)建player和target
//藍–Player 紅–Target

點擊window–windows–Navigation

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

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

點擊Navigation,點擊Bake

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

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

寫一個簡單的腳本掛載在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;
 }
}

這樣的話就實現(xiàn)了一個簡單的尋路小demo

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

導航網(wǎng)格代理 (NavMesh Agent)

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

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

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

導航網(wǎng)格障礙物 (NavMesh Obstacle)

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

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

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

網(wǎng)格外鏈接 (Off Mesh Link)

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

Bake頁面


可以設置Player的導航高度,半徑,可上的樓梯高度,斜坡角度

Generated Off Mesh Links
烘焙的時候自動構(gòu)成,上跳和下躍的網(wǎng)格外鏈接

注意:

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

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

Areas頁

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#中的反射(System.Reflection)

    C#中的反射(System.Reflection)

    這篇文章介紹了C#中的反射(System.Reflection),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#正則表達式Regex類的常用匹配

    C#正則表達式Regex類的常用匹配

    本文通過幾個具體的實例,給大家詳細介紹了C#中的正則表達式Regex類的實用方法,非常的細致,有需要的小伙伴可以參考下
    2015-12-12
  • C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放

    C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放

    在WPF里用MediaElement控件,實現(xiàn)一個循環(huán)播放單一視頻的程序,同時可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧
    2018-04-04
  • C#實現(xiàn)封裝常用Redis工具類的示例代碼

    C#實現(xiàn)封裝常用Redis工具類的示例代碼

    這篇文章主要為大家詳細介紹了C#實現(xiàn)封裝常用Redis工具類的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • unity 如何修改材質(zhì)屬性和更換shader

    unity 如何修改材質(zhì)屬性和更換shader

    這篇文章主要介紹了unity 修改材質(zhì)屬性和更換shader的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Quartz.Net實現(xiàn)原理及使用方法詳解

    Quartz.Net實現(xiàn)原理及使用方法詳解

    這篇文章主要介紹了Quartz.Net實現(xiàn)原理及使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • C# 如何生成 DataMatrix 格式的二維碼

    C# 如何生成 DataMatrix 格式的二維碼

    該文主要是利用OnBarcode.dll 生成DataMatrix 格式的二維碼的一些簡單方法和操作技巧,對C# 如何生成 DataMatrix 格式的二維碼相關(guān)知識感興趣的朋友一起看看吧
    2021-11-11
  • C#實現(xiàn)圖片上傳與瀏覽切換的方法

    C#實現(xiàn)圖片上傳與瀏覽切換的方法

    這篇文章主要介紹了C#實現(xiàn)圖片上傳與瀏覽切換的方法,是很有實用價值的一個應用技巧,需要的朋友可以參考下
    2014-08-08
  • c#實現(xiàn)在圖上畫漢字

    c#實現(xiàn)在圖上畫漢字

    這篇文章主要介紹了c#實現(xiàn)在圖上畫漢字方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • C# LINQ的基本使用方法示例

    C# LINQ的基本使用方法示例

    這篇文章主要給大家介紹了關(guān)于C# LINQ的基本使用教程,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C# LINQ具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-08-08

最新評論