Unity3D_(網格導航)簡單物體自動尋路


  NavMesh(導航網絡)是3D游戲世界中用於實現動態物體自動尋路的一種技術,將游戲場景中復雜的結構組織關系簡化為帶有一定信息的網格,進而在這些網格的基礎上通過一系列的計算來實現自動尋路。

 

實現Capsule物體自動向Sphere物體尋路:

 

 

實現過程:

 

一、搭建場景

  選擇菜單欄中GameObject->3D Object->Cube命令,在場景中創建三個Cube,並分別命名為Cube01(平台)、Cube02(斜面)、Cube03(地面)

  三個Cube參數值設置如下

Cube01(平台)、Cube02(斜面)、Cube03(地面)

            

設置完成圖:

 

 

二、功能實現

1、分別選中三個Cube對象,分別單機Inspector試圖右上角Static項右側按鈕,在彈出下拉列表中選中Navigation Static復選框,Unity就會利用這幾個Cube對象來生成導航網絡

2、選擇菜單欄中的Window->Navigation命令,彈出Navigation試圖,單機Navigation試圖右下角Bake按鈕生成導航網絡

 

其中藍色網格便是目標角色在自動尋路時可以到達的區域

 

 

三、添加目標對象

1、新建一個Capsule(膠囊體),Scale設置為(0.2,0.2,0.2)作為移動的角色(放的位置可以隨意)

  新建一個Sphere(球體),Scale設置為(0.1,0.1,0.1)作為目的的角色(放的位置可以隨意)

選中Capsule(膠囊體),選擇菜單欄中的Component->Navigation->Nav Mesh Agent命令,為Capsule對象添加導航組件。添加成功后,Capsule上會出現綠色包圍的圓柱框

 

 

四、實現Capsule(膠囊體)自動尋找Sphere目標點

  選擇菜單欄中Assets->Create->C# Script,編寫RunTest腳本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class RunTest : MonoBehaviour {

    public Transform TargetObject;

    // Use this for initialization
    void Start () {
        if (TargetObject != null)
            GetComponent<NavMeshAgent>().destination = TargetObject.position;
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}
RunTest

 

講將本綁定到Capsule上,並將Sphere物體綁定到Inspector試圖中Capsule物體腳本組件中的TargetObject項上

 

運行程序就可以實現簡單的自動尋路的效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM