【Unity】12.2 導航網格尋路簡單示例

開發環境:Win十、Unity5.3.四、C#、VS2015 動畫

建立日期:2016-05-09 spa

1、簡介

本節經過一個簡單例子,演示如何利用靜態對象實現導航網格,並讓某個動態物體利用導航網格自動尋路,最終找到目標。 設計

2、設計步驟

一、添加3個Cube 3d

啓動Unity應用程序打開ch1201_Navmesh_Sample工程,新建一個名爲Demo1-1.unity的場景,而後在場景中建立3個Cube,以下圖所示: code

image

二、生成導航網格 orm

(1)將3個Cube全變爲Static 對象

分別選中游戲場景中的3個Cube對象,在Inspector視圖中單擊static將其變爲靜態(目的是爲了讓Unity利用這些靜態的遊戲對象來生成導航網格),再右擊Static右側的下拉按鈕,可看到它已經自動勾選了下面的複選框,以下圖所示:blog

image

(2)顯示導航視圖 遊戲

選擇【Window】->【Navigation】,將導航窗口顯示出來: 開發

image

此時就會在檢視器視圖的右邊顯示【Navigation】標籤頁。

(3)設置烘培(Bake)參數

切換到【Navigation】視圖,而後切換到【Object】選項卡,可看到它默認選擇的是【All】,再切換到【Bake(烘培)】選項卡,將參數改成下圖所示的值(這樣作的目的是爲了讓角色能夠沿着斜坡走到紅色Cube的頂部),修改完成後單擊下方的【Bake(烘培)】按鈕:

image  image

此時就會在場景中看到烘培的效果:

image

至此,導航網格生成完畢。

三、添加導航目標

在紅色Cube的上方添加一個綠色的Cube,並將其名稱改成greenCube,該對象將做爲導航尋路的目標,以下圖所示:

image

四、尋路

(1)添加尋路的行進對象

在場景中新建一個膠囊體組件Capsule,該對象將做爲行進的對象:

image

將該膠囊體命名爲player,而後在檢視器視圖中,將【Scale】設置爲(0.2,0.2,0.2),以下圖所示:

image

選中player,而後選擇【Component】->【Navigation】->【Nav Mesh Agent】,這樣就爲該膠囊體添加了導航組件:

image

此時會看到在膠囊體的周圍有一個淺綠色的網格體:

image

(2)編寫C#腳本

鼠標右擊Assets,添加C#腳本,該腳本將用於讓膠囊體自動尋找導航目標:

image

將該腳本命名爲Demo1Test.cs,而後雙擊該文件,Unity就會自動在VS2015中打開它,將該文件改成下面的代碼:

using UnityEngine;
using System.Collections;

public class RunTest : MonoBehaviour
{
    public GameObject TargetObject = null;
    void Start()
    {
        if (TargetObject != null)
        {
            GetComponent<NavMeshAgent>().destination = TargetObject.transform.position;
        }
    }
    void Update() { }
}

(3)將腳本添加到膠囊體對象上

保存Demo1Test.cs腳本,而後切換到Unity,拖動該腳本到層次視圖中的膠囊體對象(player)上,以下圖所示:

image

至此,將膠囊體設置成行進物體的工做就完成了。

(4)設置尋路目標

選中膠囊體對象,而後將greenCube拖放到檢視器中的【Target Object】屬性值上:

image

(5)預覽導航尋路效果

單擊【播放】按鈕,觀察膠囊體自動尋路的動畫效果。此時會發現,膠囊體會自動尋找合適的路線,並沿該路線到達目標(greenCube)。

(6)觀察目標在不一樣位置狀況下的自動尋路過程

將綠色的Cube移動到另外一個位置,再次單擊【播放】按鈕觀察導航尋路的動畫效果。

五、改變目標位置觀察是否鑽橋洞

(1)移動目標到橋的另外一側

保存場景,而後再將該場景另存爲Scene1-2。

打開Scene1-2,將膠囊體移到橋的左側,並將綠色Cube移到橋的另外一側,以下圖所示:

image

單擊【播放】按鈕,觀察膠囊體自動尋路的效果。此時會發現,膠囊體會繞過橋洞從旁邊尋路到目標。就是說,它不會自動鑽橋洞。

(2)讓膠囊行進體能夠鑽過橋洞

保存場景,而後再將該場景另存爲Scene1-3。

打開Scene1-3,在Navigation視圖中,將【Agent Height】的值改成0.2,而後單擊下【Bake】按鈕進行烘培,以下圖所示:

image

按【播放】按鈕,此時就會看到膠囊體鑽過橋洞到達了目的地(greenCube),而再也不是繞過橋障礙物後才找到目標。

相關文章
相關標籤/搜索