导航和寻路

  • 导航网格
  • Navigation介绍
  • 代码控制物体小球运动
  • NavMeshAgent组件


导航网格

首先在Unity中创建一个简单的场景。

unity AI Navigation插件怎么用 unity中navigation_unity


将小球添加Nav Mesh Agent组件,在Windows中找到AI添加Navigation(导航) ,会出现Navigation

unity AI Navigation插件怎么用 unity中navigation_游戏引擎_02

选中所有的静态物体,勾选Navigation Static 在Bake界面中点击Bake按钮。Scene视图下会出现导航网格。

Navigation介绍

Object

属性

功能

Scene Filter

场景滤镜

All

设置所有的对象

Mesh Renderer

除相机和光照外,设置所有的对象

Terriain

只设置地形

Navigation Static

勾选后表示该对象参与导航网格的烘焙

Generate OffMeshLinks

勾选后可在导航网格中跳跃(Jump)和下落(Drop)

Navigation Area

导航区域

Bake

属性

功能

Agent Radius

设置具有导航网格代理的物体半径,半径越小,生成的网格面积越大

Agent Height

设置具有导航网格代理的物体的高度

Max Slope

设置最大允许到达斜坡的坡度

Step Height

设置允许到达台阶的高度

Drop Height

设置允许最大的下落距离

Jump Distance

设置允许最大的跳跃距离

Manual Voxel Size

设置是否手动调整烘焙尺寸

Voxel Size

设置烘焙的单元尺寸,控制烘焙的精度

Min Region Area

设置最小区域

Height Mesh

设置当地形有落差时是否生成精确而不是近似的烘焙效果

Agent

属性

功能

Name

具有导航网格代理的物体的名字

Ridus

物体的半径

Height

物体的高度

代码控制物体小球运动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public  class ray : MonoBehaviour
{
   NavMeshAgent agent;
    public Transform red;
    private void Start()
    {
        agent = GetComponent<NavMeshAgent>();
    }
    public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从相机发射一条射线到点击处
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
            //如果点击场景中一点则小球通过计算从最近的距离移动到这一点
              agent.SetDestination(hit.point);
              red.position = hit.point;//点击处出现红色小球标注便于观察
            }
        }
    }
}

NavMeshAgent组件

1.Steering[操作]

Speed[速度]:导航的移动速度;
Angular Speed[转弯速度]:模型是Z轴朝向目标点;如果不是,则转向;
Acceleration[加速度]:保持默认即可;
Stopping Distance[停止距离]:距离目的地多远的时候停止;
AutoBraking[自动停止]:保持默认勾选状态即可。

2.Obstacle Avoidance

Radius[半径]:控制代理器这个“圆柱体”的半径,也就是大小; Height[高度]:控制代理器这个“圆柱体”的高度;
Qualty[质量]:避障质量。如果您拥有大量代理,则可以通过降低避障质量来节省CPU时间。
priority[优先级]:执行避免时,此代理将忽略优先级较低的代理。该值在0-99范围内,其中较低的数字表示较高的优先级。

3.Path Finding

Auto Traverse OffMesh Link 设置为 true 可自动遍历网格外链接 (Off-Mesh Link)。如果要使用动画或某种特定方式遍历网格外链接,则应关闭此功能。
Auto Repath启用此属性后,代理将在到达部分路径末尾时尝试再次寻路。当没有到达目标的路径时,将生成一条部分路径通向与目标最近的可达位置。 Area
Mask Area Mask描述了代理在寻路时将考虑的区域类型。在准备网格进行导航网格烘焙时,可设置每个网格区域类型。例如,可将楼梯标记为特殊区域类型,并禁止某些角色类型使用楼梯。