概述
本文档将帮助你了解创建关卡和AI代理的初始步骤,以便了解导航系统中的自定义区域和查询筛选器。
你还可以下载完整示例项目,其中包含本指南中涵盖的所有素材。
目的
-
创建新关卡,并通过在关卡中放置一个导航网格体Actor来设置导航。
-
将ThirdPersonCharacter蓝图修改为使用特定的查询筛选器导航到目的地。
1 - 必要设置
-
在虚幻项目浏览器的 新项目分类(New Project Categories) 分段,选择 游戏(Games)> 第三人称(Third Person),然后点击 下一步(Next)。
-
选择 蓝图(Blueprint) 和 不含初学者内容包(No Starter Content) 选项,然后点击 创建(Create)。
阶段成果
你创建了一个新的第三人称项目,现在可以了解创建区域类和导航查询筛选器的信息。
2 - 创建测试关卡
-
点击菜单栏上的 文件(File)>新关卡(New Level)。
-
选择 基础(Basic) 关卡并点击 创建。
-
在 世界大纲视图(World Outliner) 中选择 地板(Floor) 静态网格体Actor(Static Mesh Actor),在 细节(Details) 面板中,将 缩放(Scale) 设置为X=10,Y=10,Z=1。
-
转到 放置Actor(Place Actors) 面板,搜索 导航网格体边界体积(Nav Mesh Bounds Volume)。将其拖入关卡,放置在地板网格体上。
-
选择 导航网格体边界体积(Nav Mesh Bounds Volume) 之后,转到 细节(Details) 面板,将 缩放(Scale) 设置为X=5、Y=10和Z=1。
-
转到 放置Actor(Place Actors) 面板,然后转到 形状(Shape) 类别。将 球体(Sphere) Actor拖到关卡中。
阶段成果
在本小节中,你创建了新关卡并添加了导航网格体和球体Actor。你现在可以创建将走向球体目标的代理。
3 - 创建代理
在本小节中,你将创建导航到其目标Actor的代理。
-
在 内容侧滑菜单(Content Drawer) 中,右键点击并选择 新建文件夹(New Folder),以新建文件夹。将文件夹命名为 NavigationSystem。
-
在 内容侧滑菜单(Content Drawer),转到 ThirdPersonBP > 蓝图(Blueprints),然后选择 ThirdPersonCharacter 蓝图。将其拖放到 NavigationSystem 文件夹,然后选择选项 复制到此处(Copy Here)。
-
找到 NavigationSystem 文件夹,并将该蓝图重命名为 BP_NPC_CustomZone。双击打开蓝图类,然后找到 事件图表(Event Graph)。选择所有输入节点并将其删除。
-
右键点击 事件图表(Event Graph),然后搜索并选择 添加自定义事件(Add Custom Event)。将事件命名为 MoveNPC。
-
转到 我的蓝图(My Blueprint) 面板,然后点击 变量(Variables) 旁边的 添加(+)(Add (+)) 按钮创建新变量。将变量命名为 Target。
-
转到 细节(Details) 面板,并点击 变量类型(Variable Type) 下拉菜单。搜索 Actor 并选择 对象引用(Object Reference)。启用 可编辑实例(Instance Editable) 复选框。
-
将 Target 变量拖动到 事件图表(Event Graph),然后选择选项 Set Active。从 Target 节点拖出,然后搜索并选择 Is Valid 宏,如下所示。
-
右键点击 事件图表(Event Graph),然后搜索并选择 获取对自身的引用(Get a reference to self)。
-
从 Self 节点拖出,然后搜索并选择 获取AI控制器(Get AIController)。
-
从 AI Controller 节点拖出,然后搜索并选择 移动至Actor(Move to Actor)。
-
将 Is Valid 节点的 有效(Is Valid) 引脚连接到 Move to Actor 节点。将 Move to Actor 节点的 可接受半径(Acceptance Radius) 设置为50。拖移 目标(Target) 变量并将其连接到 Move to Actor 节点的 目标(Goal) 引脚。
-
右键点击 Move to Actor 节点的 筛选器类(Filter Class) 引脚,然后选择 提升为变量(Promote to Variable)。转到 细节(Details) 面板,并启用 可编辑实例(Instance Editable) 复选框。
-
右键点击 事件图表(Event Graph),然后搜索并选择 事件开始播放(Event Begin Play)。从 Event Begin Play 节点拖移,然后搜索并选择 MoveNPC。
-
编译(Compile) 并 保存(Save) 蓝图。最终的蓝图看起来应该类似于下图。
-
将 BP_NPC_CustomZone 蓝图拖放到你的关卡中。找到 细节(Details) 面板,点击 目标(Target) 旁边的下拉菜单。搜索并选择 球体(Sphere),如下所示。
-
按下 模拟(Simulate),并观察代理向球体移动的情况。
阶段成果
在本小节中,你创建了一个导航到其目标并可以使用导航查询筛选器的代理。你现在可以了解关于添加自定义导航区域和查询筛选器的信息。