最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

一、介紹

unity官方文檔:

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

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

二、簡單使用介紹

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

點擊window–windows–Navigation

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

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

點擊Navigation,點擊Bake

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

Bake頁面


可以設(shè)置Player的導(dǎo)航高度,半徑,可上的樓梯高度,斜坡角度

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

注意:

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

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

Areas頁

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

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

相關(guān)文章

  • C#實現(xiàn)兩個窗體之間數(shù)值傳送的方法

    C#實現(xiàn)兩個窗體之間數(shù)值傳送的方法

    這篇文章主要介紹了C#實現(xiàn)兩個窗體之間數(shù)值傳送的方法,涉及C#中WinForm窗體數(shù)值傳遞的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#避免回溯方法心得

    C#避免回溯方法心得

    這篇文章主要介紹了C#避免回溯方法,以實例的形式講述了回溯方法的弊端及解決處理方法,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • C#微信公眾號與訂閱號接口開發(fā)示例代碼

    C#微信公眾號與訂閱號接口開發(fā)示例代碼

    這篇文章主要介紹了C#微信公眾號與訂閱號接口開發(fā)示例代碼,結(jié)合實例形式簡單分析了C#針對微信接口的調(diào)用與處理技巧,需要的朋友可以參考下
    2016-06-06
  • c#對xml增刪改查操作示例

    c#對xml增刪改查操作示例

    本文主要介紹c#對xml增刪改查操作的示例,大家參考使用吧
    2014-01-01
  • c# 制作gif的四種方法

    c# 制作gif的四種方法

    這篇文章主要介紹了c# 制作gif的四種方法,幫助大家更好的理解和學(xué)習(xí)c#編程語言,感興趣的朋友可以了解下
    2020-12-12
  • C#繪制實時曲線的方法

    C#繪制實時曲線的方法

    這篇文章主要為大家詳細介紹了C#繪制實時曲線的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 基于C#實現(xiàn)進程回收管理工具

    基于C#實現(xiàn)進程回收管理工具

    這篇文章主要為大家詳細介紹了入戶基于C#實現(xiàn)一個進程回收管理工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Unity Shader實現(xiàn)素描風(fēng)格的渲染

    Unity Shader實現(xiàn)素描風(fēng)格的渲染

    這篇文章主要為大家詳細介紹了Unity Shader實現(xiàn)素描風(fēng)格的渲染,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#.Net ArrayList的使用方法

    C#.Net ArrayList的使用方法

    這篇文章主要介紹了C#.Net ArrayList的使用方法,使用動態(tài)數(shù)組的優(yōu)點是可以根據(jù)用戶需要,有效利用存儲空間,需要的朋友可以參考下
    2015-10-10
  • Unity色子的投擲和點數(shù)的獲得詳析

    Unity色子的投擲和點數(shù)的獲得詳析

    這篇文章主要給大家介紹了關(guān)于Unity色子的投擲和點數(shù)的獲得的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論

枣强县| 泽州县| 正安县| 卓资县| 沂水县| 平南县| 南城县| 太湖县| 鹤岗市| 临泉县| 曲沃县| 安达市| 长治县| 许昌市| 莱州市| 烟台市| 北流市| 霍州市| 连城县| 思南县| 平山县| 苍溪县| 涟源市| 民县| 大同市| 临朐县| 右玉县| 张家川| 平阳县| 顺昌县| 伊宁市| 柯坪县| 南充市| 阿鲁科尔沁旗| 安阳市| 全南县| 齐齐哈尔市| 大石桥市| 淮阳县| 苏州市| 武宁县|