歡迎您光臨本站 註冊首頁

Unity3D實現NavMesh導航網格尋路

←手機掃碼閱讀     hongdian2012 @ 2020-06-12 , reply:0

NavMesh(導航網格)是3D遊戲世界中用於動態物體實現自動尋路的技術。

NavMesh系統是人工智能的一種,它使用一個添加在遊戲對象上或者作為遊戲對象父物體的名為“導航網格代理”(NavMeshAgent)的組件來控制該遊戲對象尋找能夠通過的路徑,並最終到達目的地。

自動尋路還可以實現繞過障礙、爬上與跳下障礙物、按類別尋找屬於自己的道路、動態設置道路中的障礙等技術。

下面用一個簡單的Demo來介紹NavMesh的應用:

1.在Scene場景中添加Cube設置場景,如圖所示:

2.選擇除了主角、目標以及攝像機、直線光以外的所有物體,在Inspector窗口的右上角勾選Static,成為靜態物體,並設置成Navigation Static靜態類型。

3.在主窗口中選擇[Window]→[Navigation],打開Navigation窗口。該窗口用於生成路徑尋找所需要的導航網格結構,代理將根據該導航網格進行尋路計算。確保勾選了“Navigation Static”。點擊Bake進行烘培。

4.選擇需要尋路的遊戲對象,為它添加一個NavMeshAgent組件。

5.編寫尋路代碼,新建一個腳本:

  //尋路網格導航  using UnityEngine;  using System.Collections;     public class DemoNavigation : MonoBehaviour  {   private NavMeshAgent agent;   //導航代理   public Transform TransHero;      // Use this for initialization   void Start()   {    agent = this.GetComponent();    if (agent && TransHero)    {     agent.SetDestination(TransHero.transform.position);    }   }  }

 

運行結果:

這樣就實現了NavMesh導航網格尋路。

                                                       

   


[hongdian2012 ] Unity3D實現NavMesh導航網格尋路已經有233次圍觀

http://coctec.com/docs/program/show-post-238184.html