自动寻路NavMesh

步骤

  1.创建地形

  2.添加角色

  3.创建多个障碍物,尽量摆放的复杂些,用来检测NavMesh的可用性和效率

  4.选中地形,在Navigation窗口中,设置Navigation Static

  5.依次选中障碍物,在Navigation窗口中,设置Navigation Static

  6.在Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进行场景烘焙,就可以烘焙出寻路网格了

  7.为角色添加NavMeshAgent组件。Component->Navigation->Nav Mesh Agent

  8.为角色新增一个脚本PlayerController.cs,实现点击目标,自动寻路功能

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

相关知识

  1.角色身上的Nav Mesh Agent组件

    Radius半径:代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)

    Speed速度:代理走向它的目的地的最大移动速度

    Acceleration加速度:最大加速度

    Angular Speed角速度:最高转速(度/秒)

    Stopping distance制动距离:到目的地的距离小于这个值,代理减速

    Auto Traverse Off Mesh Link自动遍历Off Mesh链接:自动移动并关闭Off Mesh Links

    Auto Repath自动重新寻路:如果现有的部分已失效,获得新的路径

    Hight高度:代理的高度(用于调试图形)

    Base offset基本偏移:碰撞几何体相对于实际集合体垂直的偏移

    Obstacle Avoidance障碍躲避:躲避的质量水平

    Area Mash:执行代理可以遍历的导航网格层类型

  2.障碍物一定要有Mesh Renderer,用于烘焙寻路网格

上一篇:hdoj 1004 学习思路


下一篇:基于HTML5技术的电力3D监控应用(二)