UE5-AI

AI角色

角色控制器

AI角色必须要一个角色控制器

角色控制器最基本只需要执行行为树,在EventOnPossess后runBehaviorTree

如果要的是一个角色,可以创建一个Character,在类默认设置中可以找到

Pawn->AIControllerClass,在这里设置AI操控模式和AI控制器类(角色自带移动组件,否则move to行为不起作用)

行为树

行为树是大脑,执行逻辑,数据存储在黑板,所以创建行为树同时也要创建黑板

设置AI的行为,判断,分支Selector,执行Task,顺序Sequence

根节点往下第一个只能接基础3个节点,一般选Sequence或Selector

在Selector上可以套装饰器(Decorator) 或者服务(Service)

装饰器:根据逻辑判断当前节点是否执行

服务:当运行到当前节点的时候执行服务内的逻辑

服务

一个随机找点的服务:

首先在行为树界面最上方新建一个服务

重写一个EventReceiveTickAI,这里简单找个三维向量赋值给黑板

新建一个黑板变量

使用Service:在行为树节点上右键选中想要的服务即可

装饰器

最经常使用的就是使用黑板值来判断是否执行该节点

在节点上右键选择要使用的BlackBorad

然后单机蓝色的框(装饰器),在右侧面板上可以指定具体的黑板变量

这里选择变量hasPlayer,当IsSet(设置有值或者为true)就执行

行为Task

具体的执行节点,同时也是行为树的最末端节点,

创建自定义Task

在行为树面板顶部选择NewTask

在Task中重写EventReceiveExecuteAI,记得一定执行FinishExecute

使用:直接拉出来选择要执行的Task就行

黑板

负责记录AI行为所需的数据,可以是任意类型数据

对黑板数据的读取和修改跟普通的蓝图类不同

设置变量

需要先创建一个类型为BlackBoardKeySelector变量,再将变量设置为黑板值

比如设置一个在黑板中的三维向量变量

获取变量

EQS

代替大部分常用的服务和Task,例如找点移动等

创建

进入,根节点往下拉可以看到有很多可以执行的节点

例如随机找点

可以选择Points下的各种类型(生成不同形状的查找范围)

可以在右侧面板设置生成点的范围和密度数量等

在这个节点上可以套额外的限制

比如给一个角度限制

在节点上右键AddTest选择dot(余弦)

单击dot可以选择给生成的点打分筛选

打分可以在后面选点时参与,筛选则直接去除

我这里选择只打分,并且只判断平面,反向打分Inverse(这样在身后的分最高)

判断路径是否可到达

AddTest->PathFinding

使用

完成的EQS可以直接在行为树上使用,如作为Service套在节点上

或作为节点执行

选中节点同时在右侧面板指定要执行的EQS类即可

中断节点

当角色看到玩家或者其他的判断条件需要我们放弃当前的操作时(比如moveTo,移动到一半直接去攻击玩家之类的)

需要在分支或节点上添加一个装饰器(或现有的可以满足需求也可以)

在右侧面板找到FlowControl

一般选择当结果改变时,中断自身(自身及下面的节点)

可以添加多个装饰器判断,只要一个满足就会中断

行为树只有跟节点在亮,不进行其他操作

需要检查所有的条件判断是否有问题

在服务里面添加打印输出,有时虽然Selector或Sequence上面的服务在执行,但是节点和线条并不会在闪烁,需要排查问题出现的节点位置和逻辑

添加wait节点分开其他节点来排查

其他逻辑

始终面朝玩家

通过一个task来实现面朝玩家的需求(tick需求)

但是task执行频率是一次性,并且依赖行为树的频率,并不是完整的每帧执行

在task中重写EventReceiveTickAI和EventReceiveExecuteAI

Execute是一开始执行,先获取玩家(黑板值)和AI的转向速度(自定义)

在Tick中不断地比较目标旋转和自身旋转,使用RInterpTo来实现平滑数值过度,不能忘记finish

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