Unity AI Navigation自动寻路

目录

  • 前言
  • 一、Unity中AI Navigation是什么?
  • 二、使用步骤
    • 1.安装AI Navigation
    • 2.创建模型和材质
    • 3.编写向目标移动的脚本
    • 4.NavMeshLink桥接组件
    • 5.NavMeshObstacle组件
    • 6.NavMeshModifler组件
  • 三、效果
  • 总结


前言

Unity是一款强大的游戏开发引擎,而人工智能(AI)导航是游戏中至关重要的一部分。通过Unity的AI Navigation系统,开发者可以轻松地为游戏中的角色实现自动导航功能。本文将介绍Unity中AI Navigation的基础内容,帮助开发者快速入门。


一、Unity中AI Navigation是什么?

Unity中的AI Navigation是一套用于游戏开发的导航系统,它使开发者能够为游戏中的角色提供智能的路径规划和导航功能。通过AI Navigation系统,游戏中的角色可以根据场景中的障碍物、地形等信息,自动计算出最佳路径,并沿着路径移动到目标位置。

二、使用步骤

1.安装AI Navigation

在这里插入图片描述

在这里插入图片描述

2.创建模型和材质

创建地面和材质

在这里插入图片描述

创建一个空物体,把Plane放到里面,然后挂载NavMeshSurface组件获取当前地图数据

在这里插入图片描述

NavMeshSurface 是 Unity 中用于生成导航网格的组件。它表示特定 NavMesh Agent 类型的可行走区域,并定义了场景中应该构建 NavMesh 的部分。

以下是 NavMeshSurface 组件的一些属性介绍:

  1. Agent Type:指定使用该 NavMeshSurfaceNavMesh Agent 类型。这对于烘焙设置和在寻路期间将 NavMesh Agent 匹配到适当的表面非常有用。
  2. Default Area:定义在构建NavMesh时生成的区域类型。
  3. Generate Links:如果启用此选项,由 NavMeshSurface 收集的对象将在烘焙过程中被视为生成链接。有关更多信息,请参阅链接生成部分。
  4. Use Geometry:选择用于烘焙的几何体。
  5. Object Collection:定义用于烘焙的 GameObject 集合。
  6. Advanced Settings:高级设置部分允许您自定义以下附加参数。
  7. NavMeshData(只读):定位存储 NavMesh 的资产文件。

点击bake开始烘焙地形

在这里插入图片描述

给Player挂上Nav Mesh Agent组件

在这里插入图片描述

NavMeshAgent 是 Unity 中用于导航的组件,用于控制角色在场景中的移动。

以下是 NavMeshAgent 组件的一些属性介绍:

  1. AgentType:代理的类型 。

  2. BaseOffset:相对垂直位移偏差。

  3. Speed:遵循路径时的最大移动速度。

  4. AngularSpeed:遵循路径时的最大转向速度(以度/秒为单位)。

  5. Acceleration:代理在遵循路径时的最大加速度,以单位/秒2为单位。

  6. StoppingDistance:距离目标位置停止的距离。

  7. AutoBraking:代理是否自动刹车以避免超过目标点

  8. Radius:代理的避让半径。

  9. Height:代理的高度,用于通过障碍物等。

  10. Priority :用于设置避让优先级。

  11. AreaMask:指定哪些 NavMesh 区域可通行。

3.编写向目标移动的脚本

代码如下(示例):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class SetDestination : MonoBehaviour
{private NavMeshAgent _agent;private Transform _target;// Start is called before the first frame updatevoid Start(){_agent = GetComponent<NavMeshAgent>();_target = GameObject.Find("Target").transform;}// Update is called once per framevoid Update(){_agent.SetDestination(_target.position);}
}

然后把脚本挂载Player上

4.NavMeshLink桥接组件

创建2个不贴合的平面,然后烘焙导航网格

在这里插入图片描述

创建一个空物体并添加NavMeshLink组件

NavMeshLink 是 Unity 中用于导航的组件,用于创建可导航的链接,连接使用 NavMesh 的不同位置。这些链接可以是从点到点,也可以跨越空隙,此时代理会使用入口边缘上最近的位置来穿越链接。您必须使用 NavMeshLink 来连接不同的 NavMesh Surface

在这里插入图片描述

  1. Start Point:链接的起始点,相对于 GameObject。使用 XYZ 坐标定义。

  2. End Point:链接的结束点,相对于 GameObject。使用 XYZ 坐标定义。

选中图中的小方块,然后移动

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.NavMeshObstacle组件

NavMeshObstacle 是 Unity 中用于导航的组件,用于描述移动障碍物,这些障碍物在导航世界中需要被 NavMesh Agents 避开(例如由物理系统控制的桶或箱子)。

以下是 NavMeshObstacle 组件的一些属性介绍:

创建一个模型,添加一个NavMeshObstacle组件

在这里插入图片描述
在这里插入图片描述

  1. Shape:指定障碍物的几何形状。可选择以下形状之一:

    • Box:选择一个立方体形状的障碍物。

      • Center:相对于变换位置的立方体中心。
      • Size:立方体的尺寸。
    • Capsule:选择一个椭圆形状的障碍物。

      • Center:相对于变换位置的胶囊中心。
      • Radius:胶囊的半径。
      • Height:胶囊的高度。
  2. Carve:启用此选项后,障碍物在静止时会在 NavMesh 中刻出一个洞。当障碍物移动时,它成为一个阻碍物。

  3. Move Threshold:设置更新移动刻出洞的阈值距离。当障碍物移动超过此距离时,Unity 将其视为移动中。

  4. Time To Stationary:指定障碍物被视为静止的等待时间(以秒为单位)。

  5. Carve Only Stationary:启用此选项后,仅当障碍物静止时才会刻出洞。

6.NavMeshModifler组件

NavMeshModifier 是 Unity 中用于导航的组件,用于在运行时调整 GameObject 的行为,影响导航网格的生成。以下是 NavMeshModifier 组件的一些属性介绍:

  1. Mode:指定是否考虑或忽略受影响的 GameObject。

    • Add or Modify Object:在构建 NavMesh 时考虑受影响的 GameObject。
    • Remove Object:对于指定的代理类型,在构建 NavMesh 时忽略受影响的对象。
  2. Affected Agents :指定 NavMeshModifier 影响的代理类型。

    • All:修改所有代理的行为。
    • None:排除所有代理的修改行为。
  3. Apply to Children:将配置应用于 GameObject 的子级层次结构。如果需要在层次结构的较低级别覆盖此组件的影响,可以添加另一个 NavMeshModifier 组件。

  4. Override Area:更改受影响的 GameObject 的区域类型。如果要更改区域类型,请选中复选框,然后在区域类型下拉菜单中选择新的类型。如果不想更改区域类型,取消选中复选框。

  5. Override Generate Links:在生成链接时,强制包括或忽略受影响的 GameObject。

  6. Generate Links:指定在生成链接时是否包括受影响的 GameObject。如果要在 NavMesh 构建过程中包括 GameObject,请选中此复选框

创建一个路线并挂载NavMeshModifler组件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、效果

在这里插入图片描述

总结

Unity的AI Navigation系统为游戏开发者提供了强大的路径规划和导航功能,使得开发者能够轻松实现游戏中角色的智能行动。通过本文的介绍,希望读者能够对Unity中AI Navigation的基础使用有所了解,并能够在自己的游戏项目中应用起来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/577184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 FFmpeg 和 SDL 的音视频同步播放器

基于 FFmpeg 和 SDL 的音视频同步播放器 基于 FFmpeg 和 SDL 的音视频同步播放器前置知识音视频同步简介复习DTS、PTS和时间基 程序框架主线程解复用线程音频解码播放线程视频解码播放线程 音视频同步逻辑源程序结果工程文件下载参考链接 基于 FFmpeg 和 SDL 的音视频同步播放器…

Python 多线程同步锁实战

大家好&#xff0c;今天我们要聊聊Python中的多线程世界&#xff0c;你知道吗&#xff1f;在并行处理任务时&#xff0c;多线程就像厨房里的大厨们同时烹饪多个菜品&#xff0c;但得保证每道菜都能完美出锅。这就需要我们引入一个神秘的角色——同步锁&#xff08;Lock&#xf…

win10配置CLion2022+ubuntu20.04远程部署

背景 在博文ubunut搭建aarch64 cuda交叉编译环境记录中&#xff0c;使用的ubuntu20.04虚拟机安装eclipse来交叉编译aarch64的程序&#xff0c;然后发送到jetson板子上执行。开发一段时间后发现eclipse IDE使用起来不太便捷&#xff0c;因此&#xff0c;考虑使用CLion IDE&…

设计模式-设配器模式

目录 &#x1f38a;1.适配器模式介绍 &#x1f383;2.适配器类型 &#x1f38f;3.接口适配器 &#x1f390;4.类的适配器 &#x1f38e;5.优缺点 1.适配器模式介绍 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设…

Kibana操作Elasticsearch教程

文章目录 简介ES文档操作创建索引查看索引创建映射字段查看映射关系字段属性详解typeindexstore 字段映射设置流程 新增数据新增会随机生成id新增自定义id智能判断 修改数据删除数据查询基本查询查询所有&#xff08;match_all&#xff09;匹配查询多字段查询词条匹配多词条精确…

Android 开发 OCR Tesseract4Android图片文字识别 巨详细全部代码教程

下面是整个详解步骤过程 效果图一、OCR的含义二、前提准备二、使用步骤详情1、将 JitPack 存储库添加到存储库末尾的项目根文件2、将依赖项添加到应用模块文件3、数据文件下载路径4、详情代码案例Demo如下&#xff1a;Main.xmlMain.java 效果图 流程&#xff1a;获取assets中的…

数据分析之POWER Piovt的KPI设置

内容总结&#xff1a; 1.两个表格关联不上&#xff1a;需要添加辅助列&#xff0c;建立关联 2.添加辅助列后还关联不上&#xff1a;将虚线变为实线 3.根据需求要增加一些度量值 4.设置KPI后&#xff0c;绝对值选1后设定百分比 5.在透视表里面加入KPI状态 导入所关联的数据后建立…

从关键词到上下文:GPT 如何重新定义 SEO 策略

如何利用GPT技术革新SEO内容创建&#xff1f; 新的 SEO 格局 探索 SEO 的快速变化&#xff0c;重点关注从以关键字为中心的策略到更深入地了解用户意图和上下文的转变。 GPT 简介及其对内容创建、用户参与和搜索引擎优化 (SEO) 的革命性影响。 了解 GPT&#xff1a;技术范式转…

基于单片机的便携式瓦斯检测仪系统设计

**单片机设计介绍&#xff0c;基于单片机的便携式瓦斯检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的便携式瓦斯检测仪系统设计是一个针对煤矿等工业环境中瓦斯气体浓度检测的重要项目。以下是该设计…

HarmonyOS实战开发-使用List组件实现导航与内容联动的效果。

1 卡片介绍 使用ArkTS语言&#xff0c;实现一个导航与内容二级联动的效果。 2 标题 二级联动&#xff08;ArkTS&#xff09; 3 介绍 本篇Codelab是主要介绍了如何基于List组件实现一个导航和内容的二级联动效果。样例主要包含以下功能&#xff1a; 切换左侧导航&#xff…

2.2.1.3-移动平均线

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

8722ES安捷伦8722ES网络分析仪

181/2461/8938产品概述&#xff1a; Agilent 8722ES 包括集成合成源、测试装置和调谐接收器。内置 S 参数测试仪可提供正向和反向的全范围幅度和相位测量。内置矢量精度增强技术包括完整的两端口、适配器移除和可选的 TRL 校准。 其他功能和规格包括&#xff1a; 频率&#x…