今天群里有兄弟问: “我看到navmeshagent里面有个方法叫什么获取网格边缘点的,我打算首先判断目标点在不在网格上。在的话正常逻辑,不在的话判断当前agent的位置有没有到那个边缘点 “ 。我想这样应该能解决这个问题。

解决边界点的判定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (Input.GetMouseButtonDown(1))
{
NavMeshHit hit;
NavMesh.Raycast(transform.position, target.position, out hit, 1);

if (hit.hit)
{
NavMeshPath path = new NavMeshPath();
if (agent.CalculatePath(hit.position, path))
{
var pos = path.corners[path.corners.Length - 1];
var o = GameObject.CreatePrimitive(PrimitiveType.Sphere);
o.transform.localScale = Vector3.one * 0.1f;
o.transform.position = pos;
}
}
}