国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Unity 3D 導(dǎo)航系統(tǒng)

2020-07-27 16:14 更新

過去,游戲開發(fā)者必須自己打造尋路系統(tǒng),特別是在基于節(jié)點的尋路系統(tǒng)中,必須手動地在 AI 使用的點之間進行導(dǎo)航,因此基于節(jié)點系統(tǒng)的尋路非常煩瑣。

Unity 3D 不僅具有導(dǎo)航功能,還使用了導(dǎo)航網(wǎng)格(navigation meshes),這比手動放置節(jié)點更有效率而且更流暢。

更重要的是,還可以一鍵重新計算整個導(dǎo)航網(wǎng)格,徹底擺脫了手動修改導(dǎo)航節(jié)點的復(fù)雜方法。

1) 設(shè)置 NavMesh

NavMesh 的設(shè)置方法很簡單,在 Hierarchy 視圖中選中場景中除了目標和主角以外的游戲?qū)ο?,?Inspector 視圖中單擊 Static 下拉列表,在其中勾選 Navigation Static 即可,如下圖所示。

2) 烘焙

執(zhí)行菜單 Window→Navation 命令,打開導(dǎo)航窗口,單擊右下角的 Bake(烘焙)按鈕即可,烘焙后的場景如下圖所示。 接下來詳細看看 Navigation 面板,它有 Object、Bake、Areas 這 3 個標簽頁。

其中,Object 標簽頁如下圖所示,該標簽頁可以設(shè)置游戲?qū)ο蟮膮?shù),如下表所示。當選取游戲?qū)ο蠛螅梢栽诖藰撕烅撝性O(shè)置導(dǎo)航相關(guān)參數(shù)。

參 數(shù) 功 能
Navigation Static 勾選后表示該對象參與導(dǎo)航網(wǎng)格的烘焙
Generate OffMeshLinks 勾選后可在導(dǎo)航網(wǎng)格中跳躍(Jump)和下落(Drop)
Navigation Area 導(dǎo)航區(qū)域

Bake 標簽頁如下圖所示,是 Navigation 面板最重要的標簽頁,在該標簽頁下可以設(shè)置導(dǎo)航代理相關(guān)參數(shù)以及烘焙相關(guān)參數(shù),參數(shù)說明如下表所示。

參 數(shù) 功 能
Agent Radius 設(shè)置具有代表性的物體半徑,半徑越小,生成的網(wǎng)格面積越大
Agent Height 設(shè)置具有代表性的物體的高度
Max Slope 設(shè)置斜坡的坡度
Step Height 設(shè)置臺階高度
Drop Height 設(shè)置允許最大的下落距離
Jump Distance 設(shè)置允許最大的跳躍距離
Manual Voxel Size 設(shè)置是否手動調(diào)整烘焙尺寸
Voxel Size 設(shè)置烘焙的單元尺寸,控制烘焙的精度
Min Region Area 設(shè)置最小區(qū)域
Height Mesh 設(shè)置當?shù)匦斡新洳顣r是否生成精確而不是近似的烘焙效果

3) 設(shè)置導(dǎo)航代理

導(dǎo)航代理(Navigation Agent)可以理解為去尋路的主體。

在導(dǎo)航網(wǎng)格生成之后,給游戲?qū)ο筇砑恿艘粋€ Nav Mesh Agent 組件,如下圖所示。

Nav Mesh Agent 面板中各導(dǎo)航代理參數(shù)含義如下表所示。

屬性分區(qū) 參 數(shù) 功 能
Agent Size Radius 設(shè)置導(dǎo)航代理的半徑
Height 設(shè)置導(dǎo)航代理的高度
Base Offset 設(shè)置圓柱體相對于本地坐標的偏移
Steering Speed 設(shè)置最大移動速度
Angular Speed 設(shè)置最大角速度
Acceleration 設(shè)置最大加速度
Stopping Distance 設(shè)置離目標距離還有多遠時停止
Auto Braking 激活時,到達目標位置前將減速
Obstacle Avoidance Quality 設(shè)置躲避障礙物的質(zhì)量,如果設(shè)置為0則不躲避其他導(dǎo)航 代理
Priority 設(shè)置自身的導(dǎo)航優(yōu)先級,范圍是0?99,值越小,優(yōu)先級 越大
Path Finding Auto Traverse Off Mesh Link 設(shè)置是否采用默認方式經(jīng)過鏈接路徑
Auto Repath 設(shè)置當現(xiàn)有的路徑變?yōu)闊o效時是否嘗試獲取一個新的路徑
Area Mask 設(shè)置此導(dǎo)航代理可以行走哪些區(qū)域類型

實踐案例:自動尋路

案例構(gòu)思

使用 Unity 3D 開發(fā)游戲,自動尋路可以有很多種實現(xiàn)方式。A 星尋路是一種比較傳統(tǒng)的人工智能算法,在游戲開發(fā)中比較常用。

另外,Unity 3D 官方內(nèi)置的尋路插件 Navmesh 也可以實現(xiàn)自動尋路功能。

本案例旨在通過一個簡單的三維場景漫游實現(xiàn) Navmesh 自動尋路插件的使用。

案例設(shè)計

本案例在 Unity 3D 內(nèi)創(chuàng)建一個簡單的三維場景,場景內(nèi)有各種障礙,通過 Navmesh 插件可以自動尋找到目標位置。

案例實施

步驟 1):新建三維場景,將其命名為 Navigation。其中,膠囊體作為動態(tài)移動的對象,球體作為導(dǎo)航的目標,如下圖所示。 步驟 2):選中場景中所有除了 sphere、cylinder 攝像機以及直線光以外的所有物體,單擊 Inspector 面板中右上角的 Navigation Static,使這些物體成為靜態(tài)物體,并設(shè)置成 Navigation Static 類型,如下圖所示。

步驟 3):執(zhí)行菜單欄中的 Window→Navigation 命令,Navigation 面板如下圖所示。

步驟 4):單擊該面板右下角的 Bake 按鈕,即可生成導(dǎo)航網(wǎng)格,下圖為已生成的導(dǎo)航網(wǎng)格。

步驟 5):下面就可以讓一個膠囊體根據(jù)一個導(dǎo)航網(wǎng)格運動到目標 Sphere 位置。執(zhí)行 Component→Navigation→Nav Mesh Agent 為該膠囊體掛載一個 Nav Mesh Agent,如下圖所示。

步驟 6):最后寫一個腳本就可以實現(xiàn)自動尋路了。創(chuàng)建 C# 腳本,將其命名為 DemoNavigation,腳本如下: 純文本復(fù)制

using UnityEngine;
using System.Collections;
public class DemoNavigation:MonoBehaviour{
    public Transform target;
    void Start(){
        if(target!=null){
            this.gameObject.GetComponent<NavMeshAgent>().destination=target.position;
        }
    }
}

步驟 7):腳本新建完成后掛載到膠囊體上,然后將 Sphere 賦予膠囊體的 Navigation 腳本,運行場景,如下圖所示,膠囊體會運動到 Sphere 的位置。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號