【UE5.1】NPC人工智能——07 NPC在巡逻过程中休息

目录

前言

效果

步骤

一、准备狮子休息的动画

二、实现狮子休息效果

三、随机行为

四、增加行为权重


前言

在上一篇中(【UE5.1】NPC人工智能------06 NPC攻击)我们已经实现了NPC狮子追到玩家后进行攻击的功能。本篇将在上一篇的基础上继续实现NPC在巡逻过程中偶尔休息的功能。

效果

步骤

一、准备狮子休息的动画

  1. 找到狮子休息的动画为"ANIM_Lion_GoToRest"和"ANIM_Lion_Resting"
  1. 打开狮子的动画蓝图"ABP_Lion"

在动画图表中添加两个状态,这里命名为"GoToRest"和"Resting"

添加两个布尔类型变量,这里命名为"IsGoToRest"和"IsResting",分别表示狮子是否要去休息、是否正在休息

设置一下两个状态的输出动画姿势

设置过渡规则

二、实现狮子休息效果

  1. 打开狮子蓝图"Character_Lion",在事件图表中添加如下节点,实现狮子休息与停止休息的功能
  1. 回到行为树"BT_Lion",先添加一个Sequence节点

将设置速度的服务"BTService_SetLionSpeed"移动到刚创建的Sequence上。因为巡逻和休息时的NPC移动速度是不一样的,需要单独设置。

新建一个任务

这里命名为"BTTask_Rest",表示狮子休息的任务。

在"BTTask_Rest"的事件图表中添加如下节点,调用"Rest"事件

  1. 复制一份任务"BTTask_Rest",这里命名为"BTTask_CancelRest"

打开"BTTask_CancelRest",将调用的事件改为"CancelRest"

  1. 回到行为树,使用"BTTask_Rest"和"BTTask_CancelRest"任务,注意需要将服务中的狮子速度MaxSpeed设置为0。

接下来我们希望狮子巡逻3次后就休息1次,可以通过装饰器"Loop"实现

此时就可以看到狮子走一会就会休息

三、随机行为

接下来我们希望NPC会在巡逻和休息之间有一个随机,而不是每次都是走3次休息1次

  1. 在行为树中新建一个服务

这里命名为"BTService_RandomBehavior"

  1. 新建一个枚举,命名为"Enum_Lionbehavior"

打开"Enum_Lionbehavior",添加两个枚举器

  1. 打开黑板"Blackboard_Lion",添加一个枚举类型条目

在细节面板中设置枚举类型为"Enum_Lionbehavior"

  1. 回到服务"BTService_RandomBehavior"中,添加一个变量

事件图表中添加如下节点,表示该任务是用于将黑板中的变量"LionBehavior"随机设一个枚举值

  1. 回到行为树"BT_Lion"中,添加服务"BTService_RandomBehavior"

选中"BTService_RandomBehavior",然后在细节面板中设置服务中的变量"LionBehavior"的值为黑板中的"LionBehavior"

为了方便观察,这里先将loop装饰器删除

添加两个Blackground装饰器,当黑板键"LionBehavior"等于"巡逻"时就走巡逻这个分支,等于"休息"时就走休息分支。

此时运行会发现行为树的流程卡在装饰器Blackground,这是因为LionBehivor一开始不等于休息,而Sequence节点在运行时遇到错误就会卡在那里。因此将"Sequence"更改为"Selector"节点

此时运行就可以看到NPC狮子时而巡逻时而休息,行为是随机的。

四、增加行为权重

比如现在我们希望实现NPC狮子有80%的概率在巡逻,20%的概率在休息。

我们可以打开服务"BTService_RandomBehavior",修改事件图表如下,这样就有80%的概率将黑板值设为0。

相关推荐
AA陈超17 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-06 能力输入的回调
c++·游戏·ue5·游戏引擎·虚幻
AA陈超3 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-29 属性信息委托
c++·游戏·ue5·游戏引擎·虚幻
AA陈超3 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-31 映射标签到属性
c++·游戏·ue5·游戏引擎·虚幻
gshh__3 天前
SuperMap Hi-Fi 3D SDK for Unreal 使用蓝图接口加载多源数据
ue5·游戏引擎·supermap
zhangzhangkeji4 天前
cesium126,230331,Visualize Per-Feature Metadata - 1:官方教程
ue5
zhangzhangkeji4 天前
cesium126,230316,根据经纬度动态生成物体:主要使用了角色的 tag 属性,地球锚点也是有 tag 属性的
ue5
AA陈超4 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-28 构建属性菜单小部件控制器
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji4 天前
UE5 材质-17:水材质系列一 ,panner 平移节点,
ue5·材质
zhangzhangkeji8 天前
UE5 蓝图-24:主 mainUI界面蓝图,主菜单按钮事件定义,拆分按钮,color按钮,退出按钮
ue5
zhangzhangkeji9 天前
UE5 蓝图-11:本汽车蓝图的事件图表,汽车拆分事件,染色事件(绿蓝黄青)。
ue5·1024程序员节