AI_寻路系统_基本寻路

news2024/12/30 2:12:03

学习笔记,仅供参考!

1、创建了一个新的第三人称项目,重命名为navsystem1.

2、将使用 寻路网格体边界体积(Navigation Mesh Bounds Volume) 来指定关卡中需要生成寻路的区域。代理将使用此信息在关卡中到达目的地。搜索 寻路网格体边界体积(Nav Mesh Bounds Volume),并将其拖到关卡中。

选择 寻路网格体边界体积(Nav Mesh Bounds Volume) 之后,转到 细节(Details) 面板,将 体积 缩放为X=20、Y=20和Z=5。移动体积使其覆盖整个播放区域,如下所示。

在 世界大纲视图(World Outliner) 窗口中选择 ThirdPersonCharacter 蓝图,并将其从关卡中移除。

按键盘上的 P 键,可视化关卡中的寻路网格体。如下图所示,寻路网格体默认显示为绿色。

将寻路网格体边界体积Actor添加到关卡或调整其大小后,虚幻引擎会自动生成寻路网格体。

注意寻路网格体在楼梯上无法正确绘制。出现这种况是因为,寻路网格体是关卡中碰撞体的简化呈现。在 世界大纲视图(World Outliner) 窗口中选择 RecastNavMesh-Default Actor,

然后前往 细节(Details) 面板。前往 显示(Display) 分段,并将 绘制偏移(Draw Offset) 值设置为 50。此操作可调整绘制寻路网格体的高度偏移,以提高可读性。

选择 RecastNavMesh-Default Actor,转到 细节(Details) 面板并向下滚动到 显示(Display) 分段。这里你将找到各种选项,可以更好地可视化生成的寻路网格体。在下面的示例中,我选择了 绘制多边形边缘(Draw Poly Edges) 来查看构成网格体的多边形。

视口变为

你还可以启用 绘制区块边界(Draw Tile Bounds) 复选框来可视化各个寻路区块。

你可以前往 生成(Generation) 分段,更改其选项来修改寻路网格体的生成方式。

3、将创建一个简单的代理,通过选择附近的随机位置并走到该位置,该代理将在你的关卡中游走。代理到达目的地后将等待几秒钟,然后再次重复该过程。

在 内容浏览器(Content Browser) 中,右键点击并选择 新建文件夹(New Folder),以新建文件夹。将文件夹命名为 NavigationSystem

在 内容浏览器中,转到 ThirdPersonBP > 蓝图(Blueprints),然后选择 ThirdPersonCharacter 蓝图。将其拖放到 NavigationSystem 文件夹,然后选择选项 复制此处(Copy Here)

转到 NavigationSystem 文件夹,并将该蓝图重命名为 BP_NPC_NavMesh。双击打开蓝图类,然后找到 事件图表(Event Graph)。选择所有输入节点并将其删除。

右键点击 事件图表(Event Graph),然后搜索并选择 添加自定义事件(Add Custom Event)。将事件命名为 MoveNPC

搜索并选择 获取Actor位置(Get Actor Location)

从 GetActorLocation 节点拖出,然后搜索并选择 获取半径内的随机可达点(Get Random Reachable Point In Radius)。将 半径(Radius) 设置为1000个单位。

从 GetRandomReachablePointInRadius 节点的 随机位置(Random Location) 引脚拖出,然后选择 提升到变量(Promote to Variable)。将 MoveNPC 节点连接到刚才创建的 RandomLocation 节点。

右键点击 事件图表(Event Graph),然后搜索并选择 AI移动至(AI Move To)。将 RandomLocation 节点连接到 AI Move To 节点。

右键点击 事件图表(Event Graph),然后搜索并选择 获取对自我的引用(Get a reference to self)

从 AI Move To 节点的 成功时(On Success) 引脚拖出,然后搜索并选择 延迟(Delay)。将节点 的 时长(Duration) 设置为4。从 Delay 节点的 已完成(Completed) 引脚拖出,然后搜索并选择 MoveNPC,如下所示。

重复上述步骤,以将这些节点添加到 AI Move To 节点的 失败时(On Fail) 引脚。将 Delay 节点的 时长(Duration) 设置为0.1。

右键点击 事件图表(Event Graph),然后搜索并选择 事件开始播放(Event Begin Play)。从 Event Begin Play 节点拖出,然后搜索并选择 MoveNPC

编译(Compile) 并 保存(Save) 蓝图。将你的 BP_NPC_NavMesh 蓝图拖到你的关卡,并点击 模拟(Simulate)。你应该会看到你的代理在关卡中游走。

注意事件开始运行时调用的Move Npc是自己定义的自定义事件。

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

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

相关文章

浏览器同源策略及跨域问题

同源策略:同源策略是一个重要的安全策略,它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 同源策略的作用:保护浏览器中网站的安全,限制ajax只…

汽修门店管理系统,打造高效汽修服务【汽修店软件管理系统】

在汽车后市场,汽修门店的运营效率直接影响着客户的满意度和店铺的利润。为了提升服务质量和工作效率,越来越多的汽修店开始引入汽修门店管理系统。那么,如何搭建汽修店软件管理系统,汽修门店管理系统怎么使用。 首先,我…

python基础——元组【特点,创建,常见操作方法:index,len,count】

📝前言: 上一篇文章python基础——列表讲解了关于列表的先关知识,还介绍了很多列表的常见操作方法,这篇文章我们就基于上篇文章带大家认识的有关序列的知识,继续讲解python中另一种常见的数据容器——元组:…

(学习日记)2024.03.12:UCOSIII第十四节:时基列表

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

分布式与集群,二者区别是什么?

🐓分布式 分布式系统是由多个独立的计算机节点组成的系统,这些节点通过网络协作完成任务。每个节点都有自己的独立计算能力和存储能力,可以独立运行。分布式系统的目标是提高系统的可靠性、可扩展性和性能。 分布式服务包含的技术和理论 负…

Linux学习笔记:什么是文件描述符

什么是文件描述符 C语言的文件接口文件的系统调用什么是文件描述符,文件描述符为什么是int类型?为什么新打开的文件的文件描述符不是从0开始? 文件描述符 fd (file descriptor) C语言的文件接口 当时学习C语言的时候,学习了文件接口 具体可以查看之前的文章: 链接:C语言的文…

Elasticsearch:从 Java High Level Rest Client 切换到新的 Java API Client

作者:David Pilato 我经常在讨论中看到与 Java API 客户端使用相关的问题。 为此,我在 2019 年启动了一个 GitHub 存储库,以提供一些实际有效的代码示例并回答社区提出的问题。 从那时起,高级 Rest 客户端 (High Level Rest Clie…

DP-不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1提…

Unity URP 如何写基础的曲面细分着色器

左边是默认Cube在网格模式下经过曲面细分的结果,右边是原状态。 曲面细分着色器在顶点着色器、几何着色器之后,像素着色器之前。 它的作用时根据配置信息生成额外的顶点以切割原本的面片。 关于这部分有一个详细的英文教程,感兴趣可以看一…

3.15号arm

汇编语言 1. 汇编语言的组成 汇编文件中由伪操作、伪指令、汇编指令以及代码注释这几部分组成 伪操作: ARM的汇编中伪操作以.为前缀,所有的伪操作不占用内存空间,编译汇编时告诉编译器怎么编译当前文件,主要用来修改汇编内…

如何本地部署SeaFile文件共享服务并实现无公网IP访问内网本地文件

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

C++语法、Linux命令查询网站

文章目录 1.cplusplus2.cppreference3.Linux命令查询网站 1.cplusplus 网址:https://legacy.cplusplus.com/ 2.cppreference 1.cppreference中文网站:https://zh.cppreference.com/w/首页 2.cppreference英文原站:https://en.cppreference…

最新潮乎盲盒系统源码,附搭建教程

搭建方法 宝塔创建网站,上传后端程序到根目录,在.env修改数据库账号密码 上传数据库,伪静态thinkphp 运行目录public PHP扩展安装下面的 禁用函数先禁用下面那个,就可以了 前端是uniapp 后台admin 禁用函数putenv、 扩展fileinfo…

python 如何使用 NLPchina 开源sql插件,提供代码

分享一段使用python,通过使用发送post请求的方式,来从es集群中获取数据。不用使用 elasticsearh,仅需要导入request和json包即可。 开源sql插件官方 文档 GitHub - NLPchina/elasticsearch-sql: Use SQL to query Elasticsearch 示例代码 调…

【AI】如何创建自己的自定义ChatGPT

如何创建自己的自定义ChatGPT 目录 如何创建自己的自定义ChatGPT大型语言模型(LLM)GPT模型ChatGPTOpenAI APILlamaIndexLangChain参考推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课本文将记录如何使用OpenAI GPT-3.5模型、LlamaIndex和LangChain创建自己的…

蓝桥杯单片机快速开发笔记——AT24C02 E2PROM

一、原理分析 此处考点分析:可能会在引用iic驱动文件时需要自己在头文件定义SCL/SDA sbit sda P2^1; sbit scl P2^0; 工作原理:24C02是一种电可擦除可编程只读存储器,通过I2C总线与微处理器或控制器通信。它可以通过电子方式对存储的数据进…

LeetCode Python - 55.跳跃游戏

目录 题目答案运行结果 题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 fal…

VUE 运行NPM 报错:npm ERR! code CERT_HAS_EXPIRED 解决方案

现象 由于各种原因需要调试一下VUE代码,用Git拉下来运行不了(之前是可以正常运行的),报错为:npm ERR! code CERT_HAS_EXPIRED........... 原因 NPM 证书签名过期了 解决方法 第一步:CMD 命令 查看NPM代理源…

抖音获得抖音商品详情 API 返回值说明

抖音(Douyin)的商品详情API返回值通常会包含有关商品的详细信息。这些信息可能包括但不限于商品ID、商品名称、商品价格、商品图片、商品描述、商品销售属性等。以下是一个简化的抖音商品详情API返回值示例和说明: 调用链接获取详情 item_g…

【elasticsearch实战】从零开始设计全站搜索引擎

业务需求 最近需要一个全站搜索的功能,我们的站点的特点是数据多源,即有我们本地数据库,也包含了第三方数据源,我们的数据类型除了网页,还包括了各种类型的文档,例如:doc、pdf、excel、ppt等格…