赞
踩
public class FindWayByNav : MonoBehaviour
{
public Transform target;
private NavMeshAgent nav;
private void Start()
{
nav = this.GetComponent<NavMeshAgent>();
//SetDestination方法即为寻路方法,参数为目标物体的三维向量
nav.SetDestination(target.position);
}
}
用以上代码进行测试结果如下:
因无法发布视频,所以实际效果可按一下例子自行测试
红色Cube为目标物体,黄色Sphere为寻路物体,图中浅蓝色路线为烘培的网格路线。
https://docs.unity3d.com/Manual/class-NavMeshAgent.html
http://docs.unity3d.com/Manual/class-NavMeshObstacle.html
当寻路物体需要到另一个地面时,而两个地面之间没有连接,那么在进行烘培网格路面时,并不会将两个路面上的网格路面连接起来,那么如图(忽略障碍物体)所示,
寻路物体就不能够到达另一块地面到达目标物体身边。
为解决此问题,有两种解决方案:
(1)、在两块路面之间再加一个面板,进行网格路面的烘培即可。
(2)、使用Off Mesh Link组件进行实现。
Off Mesh Link的使用方法:在两块路面上,分别添加两个空的物体,并为其中一个物体添加此组件,再设置此组件的属性,起始点和目标点,再进行网格路面的烘培即可,实际效果如下:
注意:两边地面上进行连接的点不能在烘培的蓝色网格之外,否则无效,且两点间的弧线为不加粗的!
温馨提示:使用此组件无法调节物体在两点间移动的速度,如需调节速度,建议使用第一种方法。
GetComponent<NavMeshAgent>().areaMask=8;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。