目录
AI controller
-
新建继承AI Controller蓝图类,角色使用该类来控制
-
行为树的控制在该蓝图中处理
行为树与黑板
-
BehaviorTree
-
run behavior tree
-
三种流程控制
-
sequence 顺序执行
-
selector 选择一个执行
-
simple parallel 简单并行(不常用)
-
-
task:行为树都以task结束(叶子节点),执行具体动作,可以自定义
-
自定义task可以override:receive excute ai
-
task结束一般要finish excute,否则卡死在task
-
如果需要一定时间过渡的task,可以先不finish,覆盖receive tick ai实现耗时操作后再finish excute
-
-
add service:通过服务做循环查询处理, 可以自定义
-
自带的service:EQS(环境查询)
-
自定义serve可以override:receive tick ai
-
-
-
add decorator:接收条件判断,用于selector流程选择
-
Move To指定的key必须在BD中设置key base class 为Actor
-
-
blackboard
-
设置黑板数据的两种方法
-
普通蓝图中设置值:get blackboard --- make name(指定黑板中的变量Name) --- set value as ... (不推荐,一般不会直接在蓝图设置)
-
自定义Task、Service:新建blackboard key selector类型变量用于设置黑板数据:set blackborad value as(推荐)
-
导航组件
-
Nav mesh bound volume
-
缩放选定范围后按P,生成导航范围
-
普通蓝图中的检测节点
-
射线检测:line trace(6种)
-
球形检测:sphere race
EQS环境查询系统
-
EQSTestingPawn用于测试调试EQS(直观查看目标追踪或点生成情况),设置EQS template为待测EQS
-
Generators生成不同类型的点
-
Donut生成甜甜圈形状点分布
-
Circle生成环状点分布
-
ActorOfClass:查询actor,用于目标追踪
-
一个EQS可以产生多个多个点分布或追踪多个目标
-
-
添加test类型,不同组合可以产生更复杂的EQS功能
-
Trace:射线检测
-
目标追踪:选filter only,取消勾选Bool Match(表示中间不能有碰撞)
-
-
Dot:向量点积,如玩家与AI夹角判断(视线扇形控制)
-
Score:根据函数和条件打分,可以指定线性/square等打分函数
-
Filter:过滤部分点,根据最值或范围设定保留的点
-
Mode:通过rotaion(对象的forward向量)确定向量还是两点确定向量
-
-
Distance
-
Score:根据函数和条件打分,可以指定线性/square等打分函数
-
Filter:过滤部分点,根据最值或范围,TestingPawn红色标识的表示查询到的,蓝色表示过滤的
-
Filter and score:过滤部分点后再打分
-
TestMode:选择2D、3D或单一z轴方向的测距
-
Distance to:指定测距目标Context,可以自定义
-
Context自定义需要创建蓝图继承自EnvQueryContext并覆盖实现相关函数
-
Context中不能按Task自定义的方法新建selector,只能使用第一种方法:get blackboard --- set value as
-
-
-
PathFinding:寻路,保证路径可达的目标才能被查询到
-
-
行为树使用Run EQS
-
可以作为service,也可以作为一个task,或者被自定义task/service包裹(调用)
-
设置template为指定的EQS,设置BD key为EQS查询的result key(BD中新建)
-
-
设置RunMode:查询单个最佳,或从top5/25中随机选一个(前提是test purpose使用了score,top策略从打分最高的点随机选择一个)
-
包裹EQS自定义Service方法:
-
run EQS Query :异步调用,需要用事件绑定
-
get query results:获取查询结果
-
-
Flow Control - Observer aborts:控制优先级,当执行失败是立马放弃该分支
AI两种巡逻方式
-
基于路径规划的巡逻
-
设置路点蓝图类:普通Actor,游戏中hide,存储同类型变量NextWayPoint
-
EQS寻找初始巡逻点,然后自定义任务:每次从路点对象中获取并设置下一个巡逻点
-
-
基于随机点选择巡逻
-
EQS直接寻找点分布中的随机一个进行巡逻
-
AI动画
-
random sequence player
-
行为树通过自定义Task:设置角色中的状态变量控制状态机切换
-
行为树通过自定义Task:设置角色中的状态变量控制混合by enum中的pose
-
Task中可以播放蒙太奇动画
-
动画状态机的blend时间和曲线控制让状态切换更柔和
-
动画添加notify实现伤害/声音/粒子特效等叠加,动画蓝图调用,角色里实现具体事件
AI运行时调试信息显示
-
运行时引号键开启
-
小键盘3键开启EQS信息
-
小键盘1、2键打开&关闭AI、行为树
-
小键盘 / 键打开&关闭EQS表格