可以根据角色模型添加对应的碰撞(可以附加到插槽!!!)
2D角色则在每个动画中添加插槽
可以根据角色模型添加对应的碰撞(可以附加到插槽!!!)
2D角色则在每个动画中添加插槽
overlap测试:
检测从情景生成的点是否与目标产生重叠
遇到不会的就去查询虚幻文档
Dot:
计算2个矢量之间的点积,主要测试情景是否面向其他
点积结果是标量
=1 方向一样
=-1方向相反
可用于躲猫猫AI
测试一般使用Provide ActorsSet开始
测试:
Distance:
计算距离到情景的权重,根据测试目的来决定最优项
情景:
自定义情景
生成器的搜索中心就是情景的用武之地
EQS(场景查询):从环境中收集数据
主要节点:
生成器:
基于场景生成后选项,后选项被用于后续查询
测试:
测试在指定情景下,从生成器产生的哪一个项目是最佳选项
情景 :
生成器的生成中心
让AI根据EQS查询结果,做出更智能的决策
需要在项目设置-AI系统-勾选EQS
生成器节点:
合成
自定义:EnvQueryNode
ActorOfClass:
在半径内搜索指定类,不受障碍物阻挡
使用EQS的意义:更精确地获取数据
刺激物数组就是你自己配置的感官
可以获取刺激物数组,来设置不同ai角色的感官参数!!!!!
使用枚举来设置ai的状态,以达成更复杂的判断
枚举键需要指定类型
行为树的任务执行逻辑很重要
在逻辑相似的任务中,请使用枚举进行额外判断(bool也可)
切换状态时,记得更新黑板键
注意观察器的中止!!!
loop装饰器可以循环执行制定次数分支
黑板的键值需要在控制器中初始化
ai感知组件:
让ai模拟人类的感官
一般放在单个pawn中
若是集群pawn,则放在控制器中
添加感官配置,相当于添加对应人体器官
注意!虚幻的单位是cm
视力配置:
次要视觉半径:余光范围角度
到上个已见位置的自:若被ai捕捉过,且在视觉范围内,则ai可视目标
视点向后偏移:可视范围偏移
最大年龄:可视目标有效期
若有多个感官,则需要设置主导感官
运行了ai行为树的控制器,在其控制的pawn中,可以获取黑板
要移动到实时的位置时,不能使用过程节点的引脚(例如移动完成时)
服务前缀:BTS
需要事件启动:
Event Receive Activation AI
不需要中止
将变量暴露,可以在服务中设置
黑板键值默认不赋值
黑板键可以被设置也可以被传递
传递时,需要将黑板键以目标类型传递
设置时,需要将黑板键以目标类型设置
以上需要指定黑板键,在任务内,黑板键需要设置为可编辑实例
ai行为树的第一个合成节点可以为Selector
可以使用FinishWithResult来返回结果配合Selector执行一系列操作(或者使用Sequence )
任务前缀:BTT
任务需要重载:
Event Receive Execute AI:事件接收执行AI
在执行末尾需要完成执行结束
若涉及键的更改,则需要新建黑板键选择器变量,设置对应的类型,该黑板键需要开启可编辑实例
行为树从根开始运行
根节点只能连接合成节点
合成节点:
Selector:
类似逻辑或(||),子节点任意一个成功,则返回成功,只有全部失败才返回失败
Sequence:
类似逻辑与(&&),子节点任意一个失败,则返回失败,只有全部成功才返回成功
SimpleParallel:
开始执行主任务时,次要任务会在后台执行,主任务执行完成之后,根据完成模式来决定次要任务的执行或终止
可添加装饰、服务节点
装饰器节点:
不会执行任何行为,根据特定条件影响其所在子节点的执行(类似子节点添加了执行条件)
观察者中止:
None:不进行中止
self:中止所在的节点
LowPriority:中止同级但执行顺序低于自己的节点
both:self和LowPriority
观察者通知:
OnResultChange:黑板装饰器条件改变时
OnValueChange:指定黑板键改变时
合成:
组合判断条件
黑板装饰器:
判断黑板条件或检测黑板键的改变
游戏标签检查器:
黑板条目比较装饰器
自定义装饰器
服务节点:
用于检查和更新黑板
SetDefaultFocus:
设置默认聚焦,AI角色的关注点(可以是任何键),在决策过程中起重要作用
RunEQS:
定期查询场景更新,也能更新黑板键,可设置执行间隔和EQS服务(黑板键或模板)
自定义服务
任务节点:
角色执行自定义的功能
自定义任务(重要)
根节点无法附加装饰器节点和服务节点,可以指定黑板
可以根据节点的数字明确执行顺序
行为树是人工智能更方便的工具,依赖于黑板资产
黑板的键类似于变量
行为树命名前缀:BT
黑板命名前缀:BB
获取随机移动点:
GetRandomReachablePointInRadius
要规范AI角色的移动范围,需要铺设AI导航网格体
AIMoveTo的目标优先级:
TargetActor-Destination
生成法球时注意传递的Scale的值