使用蓝图和行为树完成一个AI看到玩家后进行追逐的效果,关于如何制作AI、寻路设置、行为树等这些在随机漫游里都有记录。
一、AI原理
AI的处理过程可以分为三大阶段:感知——思考——行动
(1)感知
对AI当前状态作记录。
“基本过滤”也是一种感知行为。
基本过滤 - 如果其他感知的优先级更高,会忽略部分信息
(2)思考
AI利用感知阶段收集到的信息,对当前信息和目标进行评估,为之后的行动指明方向。
(3)行动
根据感知阶段的信息和思考阶段的决策,AI在行动阶段对信息做出相应的行为。
行动阶段结束后,AI会再次回到感知阶段。
行为有可见的,如跳跑;也有不可见的,如通信。
制作的方法围绕着这个原理:
1.感知——给与AI视觉感官,AI看到玩家。
2.思考——AI在角色蓝图进行决策,并通过控制器将感知到的数据通过黑板传给行为树。
3.行动——行为树决定AI是否追逐玩家。
二、AI感知
设置好AI角色蓝图、控制器蓝图、寻路后,就可以开始制作AI追逐了,随机漫游的部分可做可不做。
(一)添加视觉
1.创建视觉感官
为AI增加AI感知组件:打开AI角色蓝图 - 在组件面板增加AI perception感知组件
- 感官配置 - 多少数组代表AI拥有多少感官
细节 - AI感知,在感官配置栏添加数组 - 数组类型选AI sight Config(AI视力配置)
2.按归属检测 -勾选“检测中立方”
- 系统默认为中立,所以给玩家选为中立方以便检测
- 最大年龄 - 与多久前见到的最后一个目标有关
3.把玩家标记为刺激源
这样AI就能感知到,不然AI看不到玩家。
打开玩家角色蓝图 - 在组件面板添加AI感知刺激源组件。(不要选成感知组件了)
细节面板 - AI感知 - 勾选“自动注册为源”、添加数组、类型为AISense_Sight
(二)Gameplay调试感官
给AI设置好视觉后,我们还要在Gameplay中调试感官是否能够正常感知到玩家。
在使用Gameplay调试器之前,先禁用AI蓝图事件让AI停止移动,这样有助于处理感知系统。(如果做了随机漫游要断开,没做可以不用管)
1.停止AI移动
打开AI蓝图 - 对“事件开始运行”的引脚按Alt断开,停止调用随机漫游事件
2.关闭TAA临时抗锯齿选项
编辑 - 项目设置 - 引擎 - 渲染 - 默认设置 - 抗锯齿方法,勾选“无”
(其实不开也没什么问题)
- TAA临时抗锯齿 - 会把若干帧混合在一起,Gameplay的调试线条这类单像素线条很难观察到。
3.调试感官
运行游戏 - “‘”调出控制台 - 4打开感知信息
- Sight:1 - 可被看见
- Age:多久前更新的信息
【0】 - 最新的信息。
离开后,年龄开始增加。球体表示最后的位置。
在AI蓝图中调整视线半径和失去视线半径数值。