简介
本文是Unity的Navigation寻路功能实现简记。
场景布置
一个Plane和三个Cube设置成地形,并将其设置成Navigation的静态模式;一个Capsule为移动对象,为其挂上组件NavMeshAgent
,并挂自己编写的测试脚本NavigationTest
(下面回复上具体代码);再建一个LineRenderer
用于显示规划的路径,并将其托入NavigationTest
脚本的对应属性中。
场景:
代码
using UnityEngine;
using UnityEngine.AI;
public class NavigationTest : MonoBehaviour
{
public LineRenderer m_navPath;
private NavMeshAgent aget;
void Awake()
{
aget = GetComponent<NavMeshAgent>();
}
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{
aget.destination = hit.point;
}
}
if (aget.hasPath)
{//画路径线
m_navPath.positionCount = aget.path.corners.Length;
m_navPath.SetPositions(aget.path.corners);
}
else
{
m_navPath.positionCount = 0;
}
}
}