首先:随便搭個地形,有個平台和斜坡,注意斜坡的傾斜程度。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwczM4QjNxAjM3ADOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
搭出來的樣子,然後需要設定它們的Layer和勾選Navigation static 。
打開Navigation進行navmesh的烘焙
上圖大紅框中是我們可以設定的配置的:我們可以設定agent(我們需要進行尋路的對象)的半徑和高度還有可以爬坡的傾斜度,比如我們在剛剛設定的斜坡角度大于45°,那麼我們的agent就上不去,還可以設定links的一些屬性,links應該是比如有兩個平台,可以跳過去的效果。然後點選bake烘焙可以得到下圖的烘焙效果,藍色代表可以尋路的地方。
然後建立一個cylinder做我們的agent用來尋路。
要給它設定添加Nav Mesh Agent元件,然後我還添加了Rigidbody元件,還有一個C#腳本。
代碼主要實作了滑鼠點選位置然後我們的agent就去哪個地方
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class AutoFindPath : MonoBehaviour
{
public Vector3 MousePosition;
public Transform Des;
private void Start()
{
Debug.Log(Des);
StartFindPath(Des);
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, LayerMask.GetMask("Ground")))
{
MousePosition = hit.point;
StartFindPath(MousePosition);
}
}
}
private void StartFindPath(Vector3 destination)
{
this.GetComponent<NavMeshAgent>().destination = destination;
}
private void StartFindPath(Transform destination)
{
this.GetComponent<NavMeshAgent>().destination = destination.position;
}
}
效果: