VR開發(fā)實(shí)戰(zhàn)之Navigation尋路

一.什么是尋路?

尋路顧名思義就是:角色在到達(dá)指定地點(diǎn)的過程中遇到障礙物會(huì)自動(dòng)避開并自行選取最短的路程進(jìn)行移動(dòng)。大多數(shù)的游戲中都會(huì)有自動(dòng)越過障礙物與自動(dòng)尋路的功能,點(diǎn)擊場景上的一個(gè)位置,角色就會(huì)自動(dòng)尋路過去。中間可能會(huì)有很多的障礙物,角色會(huì)自動(dòng)繞過障礙物,最終達(dá)到終點(diǎn)。

二.使用尋路的方法:

第一種比較傳統(tǒng)的是使用A星尋路插件,它是一種比較傳統(tǒng)的人工智能算法,在Unity還沒有Navigation尋路系統(tǒng)的時(shí)候最常被使用的一種方法第二種就是通過Unity自帶的Navigation尋路系統(tǒng),添加腳本控制角色的自動(dòng)避讓障礙物和尋路
自動(dòng)避讓障礙物

一. 添加一塊Plane地板和一個(gè)膠囊體 Capsule(作為角色Player),給膠囊體添加Character Controller角色控制器 , 在Mesh F的Mesh改為None后會(huì)發(fā)現(xiàn),膠囊體變成了一個(gè)如鳥籠般的網(wǎng)格狀物體,這便是角色控制器
二.添加一塊Cube拉升后變成一面墻體,我們要實(shí)現(xiàn)的功能就是點(diǎn)擊對(duì)面的地面,膠囊體可以繞過墻到達(dá)指定地點(diǎn)
三.在Window中添加Navigation
四.給角色添加Nav Mesh Agent
五.將Plane和Cube的static勾選為兩個(gè)Static
六.給角色(膠囊體)添加腳本控制移動(dòng)
private NavMeshAgent agent;
void Start () { 
agent = transform.GetComponent<NavMeshAgent>();
}
void Update () {
 if (Input.GetMouseButtonDown(0)) { 
Ray r = Camera.main.ScreenPointToRay(Input.mousePosition); 
RaycastHit hit;
  if (Physics.Raycast(r, out hit)) { 
 if (!hit.collider.name.Equals("Player")) { 
 Vector3 p = hit.point; agent.SetDestination(p);
      } 
     } 
   }
  }
 }
七.給Cube和面板進(jìn)行烘焙
八.給面板的tag更改為Player(因?yàn)樵诮巧哪_本中判斷了對(duì)象的.name.Equals是否為“Player”)

現(xiàn)在點(diǎn)擊播放,這時(shí)就能實(shí)現(xiàn)物體在進(jìn)行移動(dòng)到達(dá)指定地點(diǎn)的途中遇到障礙物會(huì)自動(dòng)避讓了


自動(dòng)尋路

在原有的基礎(chǔ)上再復(fù)制一塊Plane面板,將Bake下的Jump Distance和Drop height更改數(shù)值(根據(jù)制作的面板的距離自行更改)進(jìn)行烘焙(注意如果不是復(fù)制的Plane面板而是重新創(chuàng)建的話,需要注意新面板的Static、Tag是否為Player和是否勾選Object)



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、什么是尋路? 尋路顧名思義就是:角色在到達(dá)指定地點(diǎn)的過程中遇到障礙物會(huì)自動(dòng)避開并自行選取最短的路程進(jìn)行移動(dòng)。大...
    李昀熹1112閱讀 427評(píng)論 0 0
  • unity自從3.5版本之后,增加了NavMesh尋路的功能。在此之前,unity用戶只能通過第三方插件(如Ast...
    壹米玖坤閱讀 8,506評(píng)論 0 10
  • 一、Unity簡介 1. Unity界面 Shift + Space : 放大界面 Scene界面按鈕渲染模式2D...
    MYves閱讀 8,440評(píng)論 0 22
  • 角色控制是游戲設(shè)計(jì)中必不可少的一個(gè)設(shè)計(jì)環(huán)節(jié),這一節(jié)我們講一講如何制作基本的角色運(yùn)動(dòng)控制交互邏輯。 因?yàn)槭呛唵螌?shí)例教...
    shimmery閱讀 9,565評(píng)論 5 20
  • 前言:在學(xué)習(xí)完網(wǎng)格導(dǎo)航之后,我們做一個(gè)涉及到網(wǎng)格導(dǎo)航的綜合練習(xí),涉及到前面學(xué)習(xí)的動(dòng)畫以及角色控制器等內(nèi)容,廢話不多...
    Joe_Game閱讀 305評(píng)論 0 0