AI_寻路系统_修改寻路网格体__下

虚幻引擎的 寻路系统(Navigation System) 向人工智能代理提供了寻路功能。为了能够找到开始位置和目的地之间的路径,从世界的碰撞几何结构生成了寻路网格体。

默认设置将寻路网格体细分为图块,以允许重建寻路网格体的本地化部件。生成的网格体由一些多边形组成,每个多边形都指定了成本。确定最优路径时,寻路算法将尝试确定成本最低的路径前往目的地。

寻路系统包含各种组件以及用于修改寻路网格体生成方式的设置,包括多边形的成本。这进而影响代理在你的关卡中寻路的方式。

通过本实例将学习如何使用 寻路修饰体积寻路代理链接 以及在运行时影响寻路的蓝图Actor来修改寻路网格体

使用寻路修饰体积改变特定区域中的寻路网格体成本

使用寻路代理链接在本来不可达的两个区域之间创建连接

使用智能代理链接以允许代理在平台之间朝着目标跳跃

创建移动的蓝图Actor以学习如何在运行时动态重新生成寻路网格体 需要先完成AI_寻路系统_修改寻路网格体__上

 寻路修饰体积

使用体积形状将寻路区域类应用于寻路网格体。这可以用于更改体积空间中的多边形的属性,以修改其遍历成本。

多边形属性由寻路修饰体积的相应 区域类 定义。此类确定对寻路网格体的影响。你可以使用内置类修改网格体,或创建自己的自定义实现。

一、你将首先使用内置类修改关卡中的寻路网格体。

1、转到 放置Actor(Place Actors) 面板,搜索 寻路修饰体积(Nav Modifier Volume)。将寻路修饰体积(Nav Modifier Volume)Actor拖到关卡中。注意,默认情况下,任何寻路网格体都不在体积内生成

移动 和 缩放 体积以覆盖如下所示的区域。注意,你现在会在关卡左侧移动体积,强迫代理到达底部 球体。此区域可以表示游戏中不允许代理跨越的任何障碍物。

2、、重复上一步,并在地图另一侧创建另一个区域。缩放体积时,请在代理两侧保留活动空间。

3、、将另一个 寻路修饰体积(Nav Modifier Volume) 拖到关卡中。浏览到 细节(Details) 面板并点击 区域类 旁边的 下拉列表。从列表中选择 NavArea_Obstacle 类。此内置类在体积内将指定相较于默认值(绿色的 NavArea_Default )更高的成本。这样一来,代理会避开该区域,除非代理找不到成本更低的路径。

4、、复制体积两次,以围绕球体构造以下形状。这将强迫代理绕着体积走来到达球体。

如果使用另一个体积完全阻挡球体周围的区域,代理仍将到达目的地,因为这些体积表示有效路径。相反,如果将体积的区域类更改为NavArea_Null,代理将无法到达目的地,因为代理找不到通往目标的合适路径。这是因为NavArea_Null应用了无限成本,从而导致寻路网格体不在受影响的区域中生成。

5、点击 模拟(Simulate),并注意代理如何在球体之间移动。这演示了你的更改会如何影响寻路网格体的生成方式。

效果如图:

学习了如何使用 寻路修饰体积(Nav Modifier Volumes) 更改寻路网格体的生成方式。你还学习了虚幻引擎中可用的一些内置区域类。

二、使用寻路链接代理

寻路链接代理 能将寻路网格体中没有直接寻路路径的两个区域连接起来。在搜索路径的同时,寻路链接代理会用作额外连接,供代理用于到达目的地。

寻路链接代理常用于在使用不同寻路网格体的区域之间搭桥,并告知代理,在没有连续寻路路径可用时,代理可从平台降落或跳向目标。

创建桥梁以连接两个区域

1、选择第一个 寻路修饰体积(Nav Modifier Volume),并调整其大小,使其覆盖整个地板长度,如下所示。这将阻止代理到达关卡中的底部球体。

2、转到 放置Actor(Place Actors) 面板并将 立方体 Actor拖到关卡中。将其缩放为X = 4、Y = 1、Z =0.2,并按如下所示进行放置。

3、复制 立方体 并将其移至关卡另一侧,如下所示。

这些立方体Actor充当关卡中寻路链接代理的可视表示。你不需要将其与寻路链接代理一起使用。

4、转到 放置Actor(Place Actors) 面板,并搜索 寻路链接代理(Nav Link Proxy)。将 寻路链接代理 Actor拖到关卡中。

5、选中 寻路链接代理 后,点击 PointLinks[0].Left 句柄并将其移动,使其放在网格体一侧。点击 PointLinks[0].Right 句柄并将其移动,使其放在网格体另一侧,如下所示。

如果寻路链接代理未与寻路网格体表面连接,绿色箭头将消失。

现在你已创建连接,代理将能够通过 寻路链接代理 寻路,尽管中间并未寻路数据。

6、选中 寻路链接代理 后,转到 细节(Details) 面板,并展开 指针链接(Point Links)下标记为 0 的分段,以找到 方向(Direction) 下拉列表。可以选择让 方向(Direction) 为 双向(Both Ways)从左到右(Left to Right) 或 从右到左(Right to Left)。对于本示例,选择 从左到右(Left to Right)

7、复制 寻路链接代理,并将其移至关卡另一侧。对于本示例,将 方向(Direction) 设置为 从右到左(Right to Left)

8、点击 模拟(Simulate),并注意代理现在可以通过从左侧进入并从右侧退出来到达 球体

测试发现未过去,查找原因,发现必须有这种箭头才算成功。

选中时是这种状态:

通过以上步骤学习了如何使用了寻路链接代理 来连接 寻路网格体 中没有可行路径的两个区域。你还学习了,可以配置 寻路链接代理 以使用不同的方向,如 双向(Both Ways)从左到右(Left to Right) 或 从右到左(Right to Left)

运行效果如图:

使用寻路链接代理允许代理从平台落下

将另一个 寻路链接代理 拖到关卡中,并将其放在升高平台的边缘,选中 PointLinks[0].Left 并将其放在平台边缘,选中 PointLinks[0].Right 并将其放在底部,与地板重叠的地方。找到 细节(Details) 面板,展开 指针链接(Point Links) 下标记为 0 的分段,并选择 从右到左(Right to Left) 作为 方向(Direction)

效果如图:

使用 寻路链接代理 让代理从平台落下以到达目标完成。

使用寻路链接代理允许代理跳到目标

使用 寻路链接代理 上的 智能链接,允许代理在不同平台之间跳跃。

1、选择平台网格体,在按住 Alt 键的同时将其拖到一侧以进行复制。

2、调整新平台大小并将其移至更高的位置,

3、复制 球体 Actor并将其放在平台之上

4、在 内容浏览器(Content Browser) 中,右键点击并在 创建基本资产(Create Basic Asset) 分段中选择 蓝图类(Blueprint Class)。在 选择父类(Pick Parent Class) 窗口中,转到 全部类(All Classes) 分段,并展开箭头。搜索并选择 寻路链接代理(Nav Link Proxy),然后点击 选择(Select)。将蓝图命名为 BP_NavProxyLink

5、双击打开 BP_NavProxyLink 。在 事件图表(Event Graph) 中右键点击,然后搜索并选择 事件接收智能链接已到达(Event Receive Smart Link Reached)

6、从 Event Receive Smart Link Reached 节点的 代理(Agent) 引脚拖出,然后搜索并选择 投射到角色(Cast to Character)

7、从 Cast to Character 节点的 作为角色(As Character) 引脚拖出,然后选择 提升到变量(Promote to Variable)

8、从 As Character 节点的 执行 引脚拖出,然后搜索并选择 建议发射物速度自定义弧(Suggest Projectile Velocity Custom Arc)

9、从 As Character 节点的 蓝色 引脚拖出,然后搜索并选择 获取Actor位置(Get Actor Location)。将 *Get Actor Location** 节点的 **返回数值(Return Value)** 引脚连接到 **SuggestProjectileVelocityCustomArc ** 节点的 **开始位置(Start Pos)** 引脚。

10、从 Event Receive Smart Link Reached 节点的 目的地(Destination) 引脚拖出,并将其连接到 SuggestProjectileVelocityCustomArc 节点的 结束位置(End Pos) 引脚。

11、将 作为角色(As Character) 变量拖动到 事件图表(Event Graph) 中,然后选择 作为角色获取(Get As Character)。从该节点拖出,然后搜索并选择 启动角色(Launch Character)。启用 XYOverride 和 ZOverride 复选框。

12、从 SuggestProjectileVelocityCustomArc 节点拖出,然后搜索并选择 延迟(Delay)。将 时长(Duration) 设置为0.1。将 Delay 节点的 已完成(Completed) 引脚连接到 Launch Character 节点。

13、从 SuggestProjectileVelocityCustomArc 节点的 向外启动速度(Out Launch Velocity) 引脚拖出,然后搜索并选择 向量 * 浮点

14、将 Multiplication 节点的 黄色 引脚连接到 Launch Character 节点的 启动速度(Launch Velocity) 引脚。右键点击 Multiplication 节点的 绿色 引脚,然后选择 提升到变量(Promote to Variable)

15、选择 New Var 0 节点后,转到 细节(Details) 面板,并将变量重命名为 JumpBoost。将默认值设置为 1。启用 实例可编辑(Instance Editable) 复选框,如下所示。编译并保存。

16、选择关卡中的 BP_NPC_ModNavMesh 角色,并在 细节(Details) 面板下点击 目标列表(Target List)旁边的 添加(+) 按钮,以添加新条目。搜索并选择您上次添加到平台的 球体(Sphere)Actor。

17、将 BP_NavProxyLink 蓝图Actor拖到平台上并调整连接,如下所示。

18、选择 BP_NavProxyLink 蓝图Actor后,转到 细节(Details) 面板,并点击 将端点从简单链接复制到智能链接(Copy End Points from Simple Link to Smart Link) 按钮。启用 智能链接有意义(Smart Link Is Relevant) 复选框

点击 模拟(Simulate),并观看代理现在如何跳跃以到达上一个球体。

通过创建自定义 寻路代理链接 蓝图,掌握如何将其用于让代理跳跃到平台。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

FFplay播放参数详解决及示例

1. -version 查看版本 2. -buildconf 查看编译配置 3. -formats 显示所有支持的媒体格式 4. -muxers 查看所有的封装 5. -demuxers 查看所有支持的解封装

webots的安装和体验

刚知道webots是一个机器人仿真软件,好像离开硬件可以自己玩玩,而且有人形机器人的源代码,试试看吧。 Cyberbotics: Robotics simulation with Webotshttps://www.cyberbotics.com/ 官网下载,有windows版本,看上去好简…

学习JavaEE的日子 Day27 手撕HashMap底层原理

Day27 1.手撕HashMap底层原理(重点) public class Test01 {public static void main(String[] args) {// Float float1 new Float("0.0f"); // Float float2 new Float("0.0f"); // Float result float1/float2; // System.out.println(result);/…

Airbnb将禁止在房源内安装监控摄像头

在面临隐私问题后,Airbnb 最近更新了政策,全面禁止房东在出租屋内安装并使用室内安全监控摄像头。 修订后的政策将在全球范围内适用,并将于4 月 30 日生效。Airbnb 表示,做出这一改变是为了优先考虑客人的隐私并简化安全摄像头的规…

Android 13 源码编译及报错修复

下载AOSP指定分支 repo init -u git://aosp../platform/manifest -b android-13.0.0_r83 同步代码到本地 repo sync -c 初始化编译环境, 选择构建目标 source build/envsetup.sh lunch 选择需要构建的目标,此处以aosp_arm64-eng为例 进行固件编译 make -j12 期间编译…

基于Matlab的车牌识别算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

代码随想录算法训练营第25天|16.组合总和III|17.电话号码的字母组合

代码随想录算法训练营第25天|16.组合总和III|17.电话号码的字母组合 216.组合总和III 如果把 组合问题理解了,本题就容易一些了。 题目链接/文章讲解:https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xf…

代码随想录算法训练营第41天 | 01背包问题(二维+一维) ,416. 分割等和子集

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 01背包理论基础 链接:https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%…

【Linux C | 多线程编程】线程的基础知识

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

【Linux系列】计算机系统中的架构与发行版:理解与区分

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

软件测试 自动化测试selenium 基础篇

文章目录 1. 什么是自动化测试?1.1 自动化分类 2. 什么是 Selenium ?3. 为什么使用 Selenium ?4. Selenium 工作原理5. Selenium 环境搭建 1. 什么是自动化测试? 将人工要做的测试工作进行转换,让代码去执行测试工作 …

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较,CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少,占空比越大等效出的模拟电压越趋近于高电平,占空比越小等效出来的模拟电压越趋近于低电平,分辨率表示的是占空比变化的精细程度&#xf…

ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术

原文链接:ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596849&idx3&sn111d68286f9752008bca95a5ec575bb3&chksmfa823ad6cdf5b3c0c446eceb5cf29cccc3161d746bdd9f2…

【C++】类和对象终章

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、初始化列表1.1 初始化列表的形式1.2 初始化列表的注意事项 二、explicit关键…

Halcon识别文字案例

识别文字并显示到页面上 read_image (Image, needle1.png) * 打开窗口 dev_open_window (0, 0, 512, 512, black, WindowHandle) dev_display (Image)* 画矩形 gen_rectangle1 (ROI_0, 52.4648, 99.0391, 256.758, 354.063) * 裁剪 reduce_domain (Image, ROI_0, ImageReduced)…

Unity Live Capture 中实现面部捕捉同步模型动画

Unity Face Capture 是一个强大的工具,可以帮助你快速轻松地将真实人脸表情捕捉到数字模型中。在本文中,我们将介绍如何在 Unity Face Capture 中实现面部捕捉同步模型动画。 安装 |实时捕获 |4.0.0 (unity3d.com) 安装软件插件 安装 Live Capture 软件…

合并多棵二叉搜索树

1932. 合并多棵二叉搜索树 困难 相关标签 相关企业 提示 给你 n 个 二叉搜索树的根节点 ,存储在数组 trees 中(下标从 0 开始),对应 n 棵不同的二叉搜索树。trees 中的每棵二叉搜索树 最多有 3 个节点 ,且不存在值…

【论文阅读】Diffused Heads: Diffusion Models Beat GANs on Talking-Face Generation

Diffused Heads: 扩散模型在说话人脸生成方面击败GANs paper:[2301.03396] Diffused Heads: Diffusion Models Beat GANs on Talking-Face Generation (arxiv.org) code:MStypulkowski/diffused-heads: Official repository for Diffused Heads: Diffu…

Vue3+TypeScript 学习回顾,温故而知新

文章简介: (1)简介: 在 Vue3 中编码规范如下: 编码语言: JavaScript代码风格: 组合式API选项式、API简写形式: setup语法糖 (2)复习内容: 1.核心: ref、reactive、computed、w…

【道路交通管理与控制】第九章——城市智能交通管理与控制概论

文章目录 一、概述二、路线导行系统三、交通信息服务系统(ATIS)四、先进的城市公共交通系统(APTS)五、交通拥挤收费系统六、停车诱导系统(PGIS)七、地理信息和车辆定位系统(AVL)的应…