首先:随便搭个地形,有个平台和斜坡,注意斜坡的倾斜程度。
搭出来的样子,然后需要设置它们的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;
}
}
效果: