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 组件的一些属性介绍:
- Agent Type:指定使用该
NavMeshSurface的NavMesh Agent类型。这对于烘焙设置和在寻路期间将NavMesh Agent匹配到适当的表面非常有用。 - Default Area:定义在构建
NavMesh时生成的区域类型。 - Generate Links:如果启用此选项,由
NavMeshSurface收集的对象将在烘焙过程中被视为生成链接。有关更多信息,请参阅链接生成部分。 - Use Geometry:选择用于烘焙的几何体。
- Object Collection:定义用于烘焙的 GameObject 集合。
- Advanced Settings:高级设置部分允许您自定义以下附加参数。
- NavMeshData(只读):定位存储 NavMesh 的资产文件。
点击bake开始烘焙地形

给Player挂上Nav Mesh Agent组件

NavMeshAgent 是 Unity 中用于导航的组件,用于控制角色在场景中的移动。
以下是 NavMeshAgent 组件的一些属性介绍:
-
AgentType:代理的类型 。
-
BaseOffset:相对垂直位移偏差。
-
Speed:遵循路径时的最大移动速度。
-
AngularSpeed:遵循路径时的最大转向速度(以度/秒为单位)。
-
Acceleration:代理在遵循路径时的最大加速度,以单位/秒2为单位。
-
StoppingDistance:距离目标位置停止的距离。
-
AutoBraking:代理是否自动刹车以避免超过目标点
-
Radius:代理的避让半径。
-
Height:代理的高度,用于通过障碍物等。
-
Priority :用于设置避让优先级。
-
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。

-
Start Point:链接的起始点,相对于 GameObject。使用 XYZ 坐标定义。
-
End Point:链接的结束点,相对于 GameObject。使用 XYZ 坐标定义。
选中图中的小方块,然后移动



5.NavMeshObstacle组件
NavMeshObstacle 是 Unity 中用于导航的组件,用于描述移动障碍物,这些障碍物在导航世界中需要被 NavMesh Agents 避开(例如由物理系统控制的桶或箱子)。
以下是 NavMeshObstacle 组件的一些属性介绍:
创建一个模型,添加一个NavMeshObstacle组件


-
Shape:指定障碍物的几何形状。可选择以下形状之一:
-
Box:选择一个立方体形状的障碍物。
- Center:相对于变换位置的立方体中心。
- Size:立方体的尺寸。
-
Capsule:选择一个椭圆形状的障碍物。
- Center:相对于变换位置的胶囊中心。
- Radius:胶囊的半径。
- Height:胶囊的高度。
-
-
Carve:启用此选项后,障碍物在静止时会在
NavMesh中刻出一个洞。当障碍物移动时,它成为一个阻碍物。 -
Move Threshold:设置更新移动刻出洞的阈值距离。当障碍物移动超过此距离时,Unity 将其视为移动中。
-
Time To Stationary:指定障碍物被视为静止的等待时间(以秒为单位)。
-
Carve Only Stationary:启用此选项后,仅当障碍物静止时才会刻出洞。
6.NavMeshModifler组件
NavMeshModifier 是 Unity 中用于导航的组件,用于在运行时调整 GameObject 的行为,影响导航网格的生成。以下是 NavMeshModifier 组件的一些属性介绍:
-
Mode:指定是否考虑或忽略受影响的 GameObject。
- Add or Modify Object:在构建 NavMesh 时考虑受影响的 GameObject。
- Remove Object:对于指定的代理类型,在构建 NavMesh 时忽略受影响的对象。
-
Affected Agents :指定 NavMeshModifier 影响的代理类型。
- All:修改所有代理的行为。
- None:排除所有代理的修改行为。
-
Apply to Children:将配置应用于 GameObject 的子级层次结构。如果需要在层次结构的较低级别覆盖此组件的影响,可以添加另一个
NavMeshModifier组件。 -
Override Area:更改受影响的 GameObject 的区域类型。如果要更改区域类型,请选中复选框,然后在区域类型下拉菜单中选择新的类型。如果不想更改区域类型,取消选中复选框。
-
Override Generate Links:在生成链接时,强制包括或忽略受影响的 GameObject。
-
Generate Links:指定在生成链接时是否包括受影响的 GameObject。如果要在 NavMesh 构建过程中包括 GameObject,请选中此复选框
创建一个路线并挂载NavMeshModifler组件




三、效果

总结
Unity的AI Navigation系统为游戏开发者提供了强大的路径规划和导航功能,使得开发者能够轻松实现游戏中角色的智能行动。通过本文的介绍,希望读者能够对Unity中AI Navigation的基础使用有所了解,并能够在自己的游戏项目中应用起来。
相关文章:
Unity AI Navigation自动寻路
目录 前言一、Unity中AI Navigation是什么?二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎,而人工智能&a…...
HarmonyOS实战开发-如何实现一个简单的健康生活应用(上)
介绍 本篇Codelab介绍了如何实现一个简单的健康生活应用,主要功能包括: 用户可以创建最多6个健康生活任务(早起,喝水,吃苹果,每日微笑,刷牙,早睡),并设置任…...
React中使用antDesign框架
1.在React项目中使用Ant Design,首先需要安装Ant Design: npm install antd --save 2.按需引入Ant Design组件,以减小最终打包的大小。使用babel-plugin-import插件可以实现按需加载。首先安装插件: npm install babel-plugin-import --save-…...
Electron安全防护实战:应对常见安全问题及权限控制措施
Electron安全防护实战:应对常见安全问题及权限控制措施 引言常见安全问题及其危害提升 Electron 应用安全性的措施限制渲染进程权限防止XSS与内容注入加固应用更新流程严格管理硬件权限使用安全的第三方模块加密敏感数据存储实现进程间通信(IPCÿ…...
StringBuffer与StringBuilder
1.区别 (1). String : 不可变字符序列. (2). StringBuffer : 可变字符序列.线程安全,但效率低. (3). StringBuilder : 可变字符序列.线程不安全,但效率高. 既然StringBuffer与StringBuilder都是可变字符序列,但二者咋区分开呢?…...
HCIP综合实验拓扑
实验要求 1.R5为ISP,只能进行IP地址配置,其所有地址均配为公有I地址; 2、R1和R5间使用PPP的PAP认证,R5为主认证方: R2与R5之间使用ppp的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封装; 3R1、R2、R3构建一个MGRE环境…...
nuxt学习
一、遇到的问题 1、nuxt初始化失败问题解决方案 使用npm和pnpm初始化都失败 原因:主机连不上DNS服务器 解决方案 Step1: 打开文件夹 Windows:路径:C:\Windows\System32\drivers\etc Mac: 路径:/etc/hosts Step2: 使用记事本方式打开 …...
VS学习建议
Visual Studio(简称VS)是由微软公司开发的一款集成开发环境(IDE),支持多种编程语言,主要用于Windows平台上的应用程序开发。学习使用Visual Studio涉及多个方面,以下是一些关键的学习内容&#…...
java汇总区间
给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…...
【笔记】OpenHarmony设备开发:搭建开发环境(Ubuntu 20.04,VirtualBox 7.0.14)
参考:搭建开发环境(HarmonyOS Device) Note:Windows系统虚拟机中Ubuntu系统安装完成后,根据指导完成Ubuntu20.04基础环境配置(HarmonyOS Connect 开发工具系列课) 系统要求 Windows系统要求&…...
计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建
开篇:探索稀疏多视图图像的3D场景重建与新视角合成的挑战 3D场景重建和新视角合成是计算机视觉领域的一项基础挑战,尤其是当输入图像非常稀疏(例如,只有两张)时。尽管利用神经场景表示,例如场景表示网络&a…...
halcon图像腐蚀
1、原理 使用结构元素在图像上移动,只有结构元素上的所有像素点都属于图像中时,才保留结构元素中心点所在的像素,常用于分离连接的两个物体、消除噪声。 2、halcon代码 dev_open_file_dialog (read_image, default, default, Selection) r…...
neo4j使用详解(六、cypher即时时间函数语法——最全参考)
Neo4j系列导航: neo4j及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 6.时间函数-即时类型 表示具体的时刻的时间类型函数 6.1.date函数 年-月-日时间函数: yyyy-mm-dd 6.1.1.获取date da…...
Web 前端性能优化之一:性能模型及网页原理
一、RAIL 性能模型 RAIL性能模型指出了用户对不同延迟时间的感知度,以用户为中心的原则,就是要让用户满意网站或应用的性能体验。 RAIL :响应(Response)、动画(Animation)、空闲(Idle)、加载(Load) RAIL 性能模型 用户感知延迟的时间窗口 1…...
常用的主流好用的WEB自动化测试工具强烈推荐
在业务使用的自动化测试工具很多。有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具。在现有的自动化软件当中,都是以元素的name、id、xpath、class、tag、l…...
分享几个非常不错嵌入式开源项目,一定不要错过
大家好,我是知微! 经常有小伙伴后台私信我: 有没有好的开源项目推荐怎么样才能提升自己的编程能力 那么这篇文章就推荐几个还不错的开源项目,感兴趣的小伙伴可以学习一下! 日志库EasyLogger https://github.com/ar…...
Golang基础-4
Go语言基础 介绍 基础 数组(array) 数组声明 元素访问与修改 数组遍历 关系运算 切片创建 多维数组 介绍 本文介绍Go语言中数组(array)操作(数组声明、元素访问与修改、数组遍历、关系运算、切片创建、多维数组)等相关知识。 基础 数组 数组是具有相同数据类型的…...
2024软件设计师备考讲义——UML(统一建模语言)
UML的概念 用例图的概念 包含 <<include>>扩展<<exted>>泛化 用例图(也可称用例建模)描述的是外部执行者(Actor)所理解的系统功能。用例图用于需求分析阶段,它的建立是系统开发者和用户反复…...
HTML——1.简介、基础、元素
一、简介 HTML(HyperText Markup Language)是一种用于创建网页的标记语言。它使用标记(tag)来描述网页的结构和内容。HTML被用于定义网页中的文本、图像、链接、多媒体以及其他元素的排列和呈现方式。 HTML文档是由一系列的HTML…...
Rust 标准库:std::env::args() 函数简介
std::env::args() 是 Rust 标准库中的一个函数,它属于 std::env 模块。这个函数用于获取并返回一个迭代器,该迭代器包含了程序运行时从命令行传入的所有参数。 当你运行一个 Rust 程序并从命令行传递参数时,例如: my_rust_progr…...
前端开发者如何构建个人工具箱:从工具函数到配置片段的效率实践
1. 项目概述:一个前端开发者的“百宝箱”仓库在多年的前端开发生涯中,我养成了一个习惯:每当遇到一个精巧的解决方案、一个高频使用的工具函数,或者一个值得反复琢磨的配置片段,我都会把它们收集起来。久而久之&#x…...
【DeepSeek偏见测试权威报告】:20位AI伦理专家联合验证的5大隐性偏差漏洞及规避指南
更多请点击: https://intelliparadigm.com 第一章:DeepSeek偏见测试的权威性与方法论基石 DeepSeek系列模型在开源社区引发广泛关注,其偏见评估并非依赖单一指标,而是构建于多维度、可复现的方法论体系之上。权威性源于三重验证机…...
如何用Python快速接入Taotoken平台调用多模型API
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何用Python快速接入Taotoken平台调用多模型API 对于希望快速体验不同大模型能力的开发者而言,逐一对接各家厂商的API…...
下载视频不如用Via,一分都不花
找了很长时间,没想到竟然这么简单,为啥早没发现呢! 工具的名称叫Via浏览器是个App,没错在安卓手机或平板运行的工具。 缺点:pc下用不了,有些视频下不了,如爱奇艺等。苹果手机是否能用不知道,自己试吧。 优点:操作方便、简单,即使你是小白也能熟练操作。免费,一分…...
Synology API v0.8架构重构:企业级NAS自动化管理Python SDK深度解析
Synology API v0.8架构重构:企业级NAS自动化管理Python SDK深度解析 【免费下载链接】synology-api A Python wrapper around Synology API 项目地址: https://gitcode.com/gh_mirrors/sy/synology-api Synology API v0.8版本标志着该项目在企业级NAS自动化管…...
ARM架构CPACR与SCR寄存器详解与应用
1. ARM架构系统控制寄存器概述在ARMv8/v7架构中,系统控制寄存器(System Control Registers)是处理器核心功能配置的关键组件,它们直接控制着处理器的运行状态、安全机制和硬件资源访问权限。这些寄存器通常通过协处理器CP15进行访问(在AArch3…...
工业级加密漏洞检测工具Cryptoscope解析
1. Cryptoscope:工业级加密漏洞检测工具解析在软件开发领域,加密技术的正确使用一直是个棘手问题。我见过太多项目因为加密实现不当导致数据泄露——有的使用了已被证明不安全的算法,有的密钥管理存在严重缺陷,还有的甚至把加密密…...
Spread.NET 10-19.1 都可以提供
关于 Spread.NET提供类似 Excel 的电子表格体验。Spread.NET 可帮助您创建电子表格、网格、仪表板和窗体。它包含一个强大的计算引擎,提供 450 多个函数,并支持导入和导出 Excel 电子表格。利用丰富的 .NET 电子表格 API 和强大的计算引擎,您…...
Kubernetes Pod安全标准:构建零信任的容器运行环境
Kubernetes Pod安全标准:构建零信任的容器运行环境 一、Pod安全标准的核心概念与演进 1.1 容器安全的演进历程 容器技术的普及带来了部署效率的革命性提升,但同时也引入了新的安全挑战。从Docker早期的容器逃逸漏洞到Kubernetes集群的大规模安全事件&…...
别再死记硬背了!用一张时序图+五个核心状态,彻底搞懂5G NR入网(附RRC状态机详解)
5G NR入网流程:用状态机思维拆解终端与网络的第一次握手 当一部5G手机从关机状态按下电源键,到屏幕上显示"5G"信号图标,这短短几秒内发生了上百次信号交互。传统学习方式往往要求我们死记硬背每个步骤,但若能抓住五个核…...
