AI_寻路系统_基本寻路

学习笔记,仅供参考!

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是自己定义的自定义事件。

相关推荐

  1. 洛谷B3625迷宫

    2024-03-16 12:06:01       30 阅读
  2. 洛谷 B3625 迷宫

    2024-03-16 12:06:01       22 阅读
  3. Unity3D 打造3D Astar系统详解

    2024-03-16 12:06:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 12:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 12:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 12:06:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 12:06:01       20 阅读

热门阅读

  1. 项目示例 - 3.降级熔断 - 2.Sentinel

    2024-03-16 12:06:01       18 阅读
  2. react中使用腾讯地图

    2024-03-16 12:06:01       20 阅读
  3. 解决 ArrayList 的并发问题

    2024-03-16 12:06:01       19 阅读
  4. 【力扣】234. 回文链表

    2024-03-16 12:06:01       27 阅读
  5. leetcode第49题字母异位词分组

    2024-03-16 12:06:01       24 阅读
  6. curl c++ 实现HTTP GET和POST请求

    2024-03-16 12:06:01       21 阅读
  7. MongoDB聚合运算符:$firstN

    2024-03-16 12:06:01       23 阅读
  8. MySQL常见的数据类型

    2024-03-16 12:06:01       24 阅读
  9. 一个干净的SSL连接

    2024-03-16 12:06:01       21 阅读
  10. ajax中各个参数的含义是什么?

    2024-03-16 12:06:01       18 阅读
  11. Linux系统——rsync命令

    2024-03-16 12:06:01       18 阅读
  12. 第二十章 构建和配置 Nginx (UNIX® Linux macOS)

    2024-03-16 12:06:01       19 阅读
  13. 微信小程序订阅消息授权弹窗事件

    2024-03-16 12:06:01       17 阅读
  14. 【Node.js从基础到高级运用】八、Express 框架入门

    2024-03-16 12:06:01       17 阅读