天天看点

【学习笔记】Unity3d中的自动寻路入门

  unity3d中提供给我们一个内置组件Navigation,此组件帮我们完成强大的自动寻路的功能。由于内容比较多,我们需要慢慢深入去了解。今天就实现一个简单的鼠标点击地面,物体到达点击点的寻路实例。

  首先,建立一个Plane作为地面,然后选中Plane点击Window->Navifation,此时Navigation面板会显示出来。

【学习笔记】Unity3d中的自动寻路入门

  选中Navigation Static后,点击右下角的Bake按钮对Panle进行烘焙,稍等片刻会发现Scene视图中的Plane变为蓝色

【学习笔记】Unity3d中的自动寻路入门

   此区域就是自动寻路的区域。

  接下来,创建我们的主角Cube,对其进行同Plane一样的烘焙操作,然后点击Componet->Navigation->Nav Mesh Agent为角色添加NavMeshAgent组件,下面还是需要为主角添加脚本进行控制。

    脚本如下:

public class PlayerController : MonoBehaviour
{
private NavMeshAgent agent;
void Start()
{
//获取组件
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
//鼠标左键点击
if (Input.GetMouseButtonDown(0))
{
//摄像机到点击位置的的射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//判断点击的是否地形
if (!hit.collider.name.Equals("Plane"))
{
return;
}
//点击位置坐标
Vector3 point = hit.point;
//转向
transform.LookAt(new Vector3(point.x, transform.position.y, point.z));
//设置寻路的目标点
agent.SetDestination(point);
}
}
}
}
           

  完成以后,我们点击Plane平面位置,Cube就会自动的移动到此点。

【学习笔记】Unity3d中的自动寻路入门

     今天就写到这里吧,我要潜水了。。。。。。。。。。

继续阅读