(一)Character Controller角色控制器組件
做過小Demo,讓游戲物體朝向鼠標點擊的地面位置移動,代碼如下:
public class charter : MonoBehaviour
{
private CharacterController c;
void Start ()
{
c = GetComponent<CharacterController>();
}
void Update ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray,out hit ))
{
if (hit.collider.name.Equals("Cube"))
{
if (Input.GetMouseButton(0))
{
Vector3 p = hit.point-transform.position;
c.Move(p*Time.deltaTime*5f);
}
}
}
}
}
(二)Nav Mesh Agent:尋路、尋址
如果角色面前有障礙,鼠標點擊到障礙物后邊,如何移動,我們可以使用Nav Mesh Agent組件。
首先我們創建一個障礙物一個游戲對象和一個地面,然后我們給游戲對象添加Nav Mesh Agent組件和移動腳本
public class charter : MonoBehaviour
{
private NavMeshAgent c;
void Start()
{
c = GetComponent<NavMeshAgent>();
}
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (!hit.collider.name.Equals("Plane"))
{
return;
}
Vector3 p = hit.point;
c.SetDestination(p);
}
}
}
然后我們我們設置地面和障礙物的靜態
然后我們再去給地面和障礙物烘焙,最后別忘記Bake哦
(三)Navigation導航
Object:物體參數面板
Navigation Static:勾選后表示該對象參與導航網格的烘培。
OffMeshLink Generation:勾選后可跳躍(Jump)導航網格和下落(Drop)。
Bake:烘培參數面板
Radius:具有代表性的物體半徑,半徑越小生成的網格面積越大。
Height:具有代表性的物體的高度。
Max Slope:斜坡的坡度。
Ste Height:臺階高度。
Drop Height:允許最大的下落距離。
Jump Distance:允許最大的跳躍距離。
Min Region Area:網格面積小于該值則不生成導航網格。
Width Inaccuracy:允許最大寬度的誤差。
Height Inaccuracy:允許最大高度的誤差。
Height Mesh:勾選后會保存高度信息,同時會消耗一些性能和存儲空間。
(四)offMeshLink:從網鏈接
屬性:
開始 (Start) 分離網格鏈接的開始對象。
結束 (End) 分離網格鏈接的結束對象。
成本覆蓋 (Cost Override) 如果值為正,則在路徑請求處理中計算路徑成本時使用該屬性。否則,我們使用默認成本(此游戲對象所屬的層的成本)。如果“成本覆蓋”(Cost Override) 設置為值 3.0,則在分離網格鏈接上移動的成本比在默認導航網格區域中移動相同距離的成本高三倍。 此屬性可在運行時編輯,無需重新烘焙''
雙向 (Bi Directional) 如果此屬性為“開”(on),則可以雙向穿越鏈接,如果它為“關”(off),則只能按從“開始”(Start) 到“結束”(End) 的方向穿越鏈接。
已激活 (Activated) 指定尋路器是否實際使用此鏈接。此屬性可在運行時編輯,無需重新烘焙。
如何從一個地面跳躍到另一個地面
首先我們在創建另一Plane(1),然后在第一個Plane上添加Off Mesh Link上并且將兩個地面連接起來,然后我們給新添加的地面也添加今天值,再然后我們給新添加的地面也烘焙好
然后我們在烘焙界面Bake上修改其距離
這樣我們就完成了
(五)Nav Mesh Obstacle
在導航網格上的固定障礙物,可以作為烘焙過程中的一部分設置。
但是,也可能在場景具有動態阻擋物,這將通過Agent移動來避開。
這種動態障礙物,可以指定Navmesh Obstacle組
可以被添加任何游戲物體上并隨該對象移動。
Radius 半徑 : 障礙物圓柱的半徑
Height 高度 : 障礙物圓柱的高度
Carve:是否打開在導航網格挖洞的模式
Move Threshold:當模式為Carve時,此物體的移動距離超過這個閥值后,更新當前的導航網格(重新挖洞)