Unity-八(导航和寻路)

导航网格

首先在Unity中创建一个简单的场景。
在这里插入图片描述
将小球添加Nav Mesh Agent组件,在Windows中找到AI添加Navigation(导航) ,会出现Navigation
在这里插入图片描述

选中所有的静态物体,勾选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描述了代理在寻路时将考虑的区域类型。在准备网格进行导航网格烘焙时,可设置每个网格区域类型。例如,可将楼梯标记为特殊区域类型,并禁止某些角色类型使用楼梯。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值