NavMesh 入門知識(1)

NavMesh是自動尋路系統(tǒng),我們字游戲中經(jīng)常會用到,比如控制角色移動的時候,他會繞開障礙物到達你所指定的地點。而這個功能需要我們第一烘培場景,這個需要Navagation,第二給角色添加NavMeshAgent組件,這篇文章我們就介紹下NavMeshAgent組件。

Paste_Image.png
  • AgnetSize 這個組件的大小
  • Radius 半徑 Height 高度,這個組件是有大小的,我們可以根據(jù)角色自身來調(diào)節(jié)半徑和高度。
  • Base Offset 中心偏移量,這個是根據(jù)高度來說的,就是這個組件與角色自身高度中心的便宜。這個大家可以去 試一下。
  • Steering 操縱力
  • Speed 速度,也可以理解為角色移動最大速度
  • Angular Speed 角速度,就是角色轉(zhuǎn)向時的一個角速度,一般我們都把他調(diào)到2000以上。
  • Stopping Distance 停止距離,我上圖填的是2,當我們選中一個目標點以后,該角色移動到距離目標2米時時停下。
  • Auto Barking這個是是否自定減速。假如我們沒有勾選這個選項時,那么角色就會越過目標點,向前移動一定距離后,再往目標點移動,然后再越過,就是來回在目標點徘徊。
  • Obstacle Avoidance
    這整個選項是控制優(yōu)先等級的,低優(yōu)先級會給高優(yōu)先級的讓路。
  • Path Finding 尋找路徑
  • AutoTraverseOffMeshLi 運行到分離網(wǎng)格的時候,是否自動移動。
  • AutoRepath 是否自動重新規(guī)劃路線,打個比方,我們把目標點放在一個屋子里而門沒有開,當角色移動到門口的時候就會停下,如果我們選中的是自動規(guī)劃路線,那我們在把門打開的時候,角色就會自動進入到屋子里,反之不選的話,即使我們把門打開,角色還是停留在門口不會進去。
  • Area Mask物體可以移動的網(wǎng)格區(qū)域,mask就是遮罩的意思,這個參數(shù)我們在以后會講。
    接來下我們大致講解下Navagation
Paste_Image.png

首先通過window菜單欄才選中Navagation打開

Paste_Image.png

(小技巧:有的時候我們在Scene視圖中看不到這個烘焙過的網(wǎng)格界面,但是我們點了Navation面板以后就能看到了)

  • Agent Radius 這個數(shù)值表示距離障礙物多遠的距離不會被烘培到可行走的網(wǎng)格里


    Paste_Image.png

    比如上圖中紅箭頭指示的兩個區(qū)域,從地面來講,橋的兩邊我們到達的,從橋面來講,橋的兩邊我們也是不能到達的。(個人理解)

  • Agent Height 還是以橋為例子,假如橋洞的有些區(qū)域的高度大于該高度,那么這些區(qū)域就是可行走的。看下圖
Paste_Image.png
  • Max Slope 最大坡度,跟上邊兩個的理解一樣。可行走的最大高度
  • Step Height 如果一個物體的高度大于該值,那么角色將不能行走上去。這個值要比 Agent Height 這個值要小,如果大于 Agent Height ,那系統(tǒng)就會進行截斷,把該值設為 Agent Height 的值。(這個我們還是以上圖的橋為例,假如StepHeight值為3,AgentHeight為2,那么導航網(wǎng)格會把兩個都烘培成可以走的區(qū)域,能從地面直接走到橋上,也能從直接橋下通過,這樣可能就會出問題,這是我的個人理解),下圖物體的高度大于StepHeight。
Paste_Image.png
  • Generated Off Mesh Links 這個是意思分離分離網(wǎng)格之間的連接,假如按照上邊的一些參數(shù),我們會有一些區(qū)域變得到達不了,而通過下邊的兩個參數(shù)我們就可以建立一個連接。
    首先我們先選中一個物體,然后把Navigation下的選到Object
Paste_Image.png

把箭頭1指向的Generate OffMeshLimks勾選上,而箭頭2指向的NavigationArea這就是你希望把該區(qū)域烘焙成什么類型的區(qū)域,而NavigationStatic這個就代表是靜態(tài)的,在游戲中是不能移動的。同時當我們在烘焙的時候就會把他的一些網(wǎng)格信息存儲起來,然后在計算最短路徑的時候會把這個考慮進去,假如我們不勾選,則當角色移動到該物體,與該物體發(fā)生碰撞的時候才會考慮這個物體,只有我們把這個勾選上才可以去選擇下邊兩個選項,否則選擇不了。
接下來我們繼續(xù)回到Bake界面

  • Drop Height 可以從高處跳到地面的最高高度
Paste_Image.png

這個只能從上往下跳躍,假如我們想從下往上跳躍,我們只能使用手動網(wǎng)格連接

  • Jump Distance 可以跳的最遠距離
Paste_Image.png

手動添加分離網(wǎng)格連接

首先創(chuàng)建一個Cube,然后添加上OffMeshLish組件

Paste_Image.png
Paste_Image.png
  • Start 和 End表示起點和終點
  • CostOverride表示需要的行動力
  • BiDirrection 勾選時表示雙向,不夠選時表示單項(從Start到End)
  • Activated 表示該鏈接是否是激活的
Paste_Image.png

設置完以后我們就發(fā)現(xiàn)這兩個物體之間有一條線在連接,而且箭頭是雙指向的。

補充:關于NavMesh常用API
destination:NavMeshAgent的目的地
remainDistance;距離目的地剩下的距離
Resume()重新規(guī)劃路徑
Stop()停止
SetDestination()設置目標點
Warp()讓NavMeshAgent瞬移到該點

注意

當我們每次要對導航網(wǎng)格修改時,每次修改以后一定要點一下Bake這個按鈕,然后他才會自動烘培。
還有一個小技巧,當我們想把某個新建物體烘培到場景里邊里邊時

Paste_Image.png

可以直接通過這個標簽來進行設置,比較快捷。

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

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

  • 角色控制是游戲設計中必不可少的一個設計環(huán)節(jié),這一節(jié)我們講一講如何制作基本的角色運動控制交互邏輯。 因為是簡單實例教...
    shimmery閱讀 9,559評論 5 20
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • (一)Character Controller角色控制器組件 做過小Demo,讓游戲物體朝向鼠標點擊的地面位置移動...
    _涼笙閱讀 970評論 0 1
  • 前言 溫馨提示:本文較長,圖片較多,本來是想寫一篇 CSS 布局方式的,但是奈何 CSS 布局方式種類太多并且實現(xiàn)...
    sunshine小小倩閱讀 3,173評論 0 59
  • 云涌青煙映碧天,風逐翠浪舞翩躚。 連綿不斷山疊谷,撲索迷離寨隱仙。 過去軍工要塞地,如今美景秀棱邊。 峰回路轉(zhuǎn)千林...
    天水居士閱讀 467評論 5 8