Unity自动寻路的简单演示

来源:互联网 发布:锐思数据库 编辑:程序博客网 时间:2024/05/01 19:05

Unity3D 自带有自动寻路的组件,我也是初次学习,写下心得供各位参考参考。。

先直接写下使用方法,先明白怎么用,熟了之后再去了解为什么会这样。

就用一个鼠标点击寻路来演示吧。。。

首先我们新建一个plane和几个cube来构建一个简单的场景,如下图所示:

图中的球是我们要用来控制的角色,需要将除了球以外的所有物体勾选上Inspector窗口里的Navigation Static:


接下来,选择菜单栏->Window->Navigation打开Navigation窗口,选择每个物体,勾选上,Navigation Static选项,下面的选项暂时可以不用管。将障碍物的Navigation Layer选项选择为Not Walking,plane的Navigation Layer选择为Default。


全部搞定以后点击窗口底部的Bake按钮,场景会变成如下样子:

浅蓝色那一层就是我们创建出的路径图了。是不是很简单。。。

下一步我们来控制我们的角色。

选择圆球,单击->Component->Navigation->Nav Mesh Agent来给圆球添加一个寻路代理组件(里面的参数先别管,都默认就行了,等熟悉了再去慢慢研究)。

然后给通过一段代码来控制圆球,控制圆球的代码如下:

using UnityEngine;using System.Collections;public class NavMeshMove : MonoBehaviour {    private NavMeshAgent m_nma;//寻路代理组件    private Camera m_camera;    private RaycastHit m_hitPoint;    private Ray m_ray;    private LayerMask m_mask;// Use this for initializationvoid Start ()     {        m_nma = GetComponent<NavMeshAgent>();        m_camera = Camera.main;        m_mask = 1 << 8;}// Update is called once per framevoid Update ()     {        if (Input.GetMouseButtonDown(1))        {            Physics.Raycast(m_camera.ScreenPointToRay(Input.mousePosition), out m_hitPoint, Mathf.Infinity, m_mask);            Debug.Log(m_hitPoint.point.ToString());            m_nma.SetDestination(m_hitPoint.point);        }}}

将代码附到圆球上去。运行,鼠标点击平面任意位置,小球变开始演示寻路效果了。

0 0
原创粉丝点击