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

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

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

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

一、介紹

unity官方文檔:

導(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)建或烘焙的。

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

二、簡(jiǎn)單使用介紹

簡(jiǎn)單搭一個(gè)場(chǎng)景,創(chuàng)建player和target
//藍(lán)–Player 紅–Target

點(diǎn)擊window–windows–Navigation

在Player身上掛載Nav Mesh Agent組件
導(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)的障礙物。

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

點(diǎn)擊Navigation,點(diǎn)擊Bake

可以看到場(chǎng)景中物體可以移動(dòng)的敵方被烘焙成藍(lán)色

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

寫(xiě)一個(gè)簡(jiǎn)單的腳本掛載在Player小球身上,告訴它它的目標(biāo)點(diǎn)在哪

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

using UnityEngine;
using UnityEngine.AI;

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

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

這樣的話就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的尋路小demo

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

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

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

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

Path Finding
Auto Traverse OffMesh Link 設(shè)置為 true 可自動(dòng)遍歷網(wǎng)格外鏈接 (Off-Mesh Link)。如果要使用動(dòng)畫(huà)或某種特定方式遍歷網(wǎng)格外鏈接,則應(yīng)關(guān)閉此功能。
Auto Repath 啟用此屬性后,代理將在到達(dá)部分路徑末尾時(shí)嘗試再次尋路。當(dāng)沒(méi)有到達(dá)目標(biāo)的路徑時(shí),將生成一條部分路徑通向與目標(biāo)最近的可達(dá)位置。
Area Mask Area Mask 描述了代理在尋路時(shí)將考慮的區(qū)域類(lèi)型。在準(zhǔn)備網(wǎng)格進(jìn)行導(dǎo)航網(wǎng)格烘焙時(shí),可設(shè)置每個(gè)網(wǎng)格區(qū)域類(lèi)型。例如,可將樓梯標(biāo)記為特殊區(qū)域類(lèi)型,并禁止某些角色類(lèi)型使用樓梯。(比如,我想讓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)格障礙物會(huì)在導(dǎo)航網(wǎng)格中創(chuàng)建一個(gè)孔。
Move Threshold 當(dāng)導(dǎo)航網(wǎng)格障礙物的移動(dòng)距離超過(guò) Move Threshold 設(shè)置的值時(shí),Unity 會(huì)將其視為移動(dòng)狀態(tài)。使用此屬性可設(shè)置該閾值距離來(lái)更新移動(dòng)的雕孔。
Time To Stationary 將障礙物視為靜止?fàn)顟B(tài)所需等候的時(shí)間(以秒為單位)。
Carve Only Stationary 啟用此屬性后,只有在靜止?fàn)顟B(tài)時(shí)才會(huì)雕刻障礙物

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

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

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

Bake頁(yè)面


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

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

注意:

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

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

Areas頁(yè)

可以創(chuàng)建不同的Areas,設(shè)置不同的Cost,讓角色對(duì)經(jīng)過(guò)某些路線進(jìn)行一個(gè)傾向。比如設(shè)置敵人雖然可以直接穿過(guò)毒氣抓到主角,但是因?yàn)槎練獾腸ost較高,可以讓敵人盡量繞過(guò)毒氣去抓主角,但是如果會(huì)繞的太遠(yuǎn)的話,敵人還是會(huì)選擇穿過(guò)毒氣。

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

相關(guān)文章

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

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

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

    C#避免回溯方法心得

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

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

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

    c#對(duì)xml增刪改查操作示例

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

    c# 制作gif的四種方法

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

    C#繪制實(shí)時(shí)曲線的方法

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

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

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

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

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

    C#.Net ArrayList的使用方法

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

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

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

最新評(píng)論

诏安县| 贵港市| 尖扎县| 盘山县| 大荔县| 依安县| 镇巴县| 昌吉市| 中宁县| 繁峙县| 墨竹工卡县| 岳池县| 攀枝花市| 金昌市| 吉隆县| 吉林省| 科技| 南溪县| 三门县| 海晏县| 黄石市| 陵川县| 延津县| 永昌县| 巩留县| 荣昌县| 华阴市| 礼泉县| 台中市| 广安市| 泽州县| 剑河县| 新源县| 綦江县| 满洲里市| 古蔺县| 赤峰市| 拉孜县| 新闻| 彭泽县| 曲水县|