【AI笔记】【UE5】AI感知组件 (AIPerception) 学习笔记
【AI笔记】UE5 AI感知组件 (AIPerception) 核心指南
一、 系统概述
AI 感知组件(AIPerception)就像是怪物的“五官”,它负责接收外界的刺激(如玩家的身影、枪声或受到的攻击),并将这些信息转化为可以被行为树处理的数据。引擎内置了多种感官(Senses),每种感官都有一套专属的参数来精细控制其侦测能力。核心感官主要包括视觉感知 (Sight)、听觉感知 (Hearing) 以及伤害感知 (Damage)。
二、 视觉感知 (Sight) 核心参数配置
在 UE5 中,视觉并不是简单地画一条射线检测,而是通过构建一个具有空间体积的**“视野扇形(Vision Cone)”**来进行综合判定的。
1. 基础视力参数
- 视线半径 (Sight Radius):这是 AI 能够首次发现目标的绝对最大距离,也是决定怪物视野长度的基准线。
- 失去视线半径 (Lose Sight Radius):当 AI 已经发现了目标后,目标需要逃离多远,AI 才会“丢失”视觉信号。
- 策划核心逻辑:该值必须大于或等于视线半径。这两个值的差值形成了一个缓冲带,用于防止玩家在边界往返跑时导致的 AI“边缘抽搐(Jittering)”现象。
- 边缘视觉半角 (Peripheral Vision Half Angle):决定 AI 视野宽度的参数。它代表从 AI 正前方(Forward Vector)向左和向右各展开的角度(例如:设置 90 度,总视野即为 180 度;设置 45 度,总视野为 90 度)。
- 到上个已见位置的自动成功范围 (Auto Success Range From Last Seen Location):这是“防穿模/防近身盲区”机制。在这个距离范围内,AI 会无视视野角度强制判定看到目标,防止玩家贴紧怪物背后“秦王绕柱走”而完全不被发现。
2. 进阶机制参数
- 视点向后偏移 (Point of View Backward Offset):把生成“视野扇形”的起点,向怪物的脑后(甚至身体后方)拉动一段距离。这常用于巨大体型的怪物,防止玩家紧贴怪物胸口或脚底时处于视线起点之后,导致视野判定穿模失效。
- 接近剔除半径 (Near Clipping Radius):这是怪物的**“绝对盲区”**。与视线半径相反,只要目标进入这个极近的范围内,AI 就会彻底看不见目标(适合制作狙击手盲区或巨大机甲的脚底盲区)。
- 最大年龄 (Max Age):决定了 AI 的**“短期记忆时长”**(单位:秒)。当玩家脱离视野后,AI 在这段时间内依然能记住玩家的位置;如果设置为 0(默认值),玩家一旦离开视线,AI 会立刻丢失目标的所有信息。
- 按归属检测 (Detection by Affiliation):AI 的敌我识别系统 (IFF),包含检测敌人、中立、友军三个复选框。
- 🔥 策划避坑指南:默认情况下,如果未在 C++ 里专门配置队伍 ID(Team ID),所有 Pawn 互作“中立(Neutral)”阵营。因此,在没有写底层阵营代码前,99% 的视而不见 Bug 都是因为没有勾选“检测中立 (Detect Neutrals)”,请务必将其勾上。
三、 感知事件的入口节点与数据流
在 UE5 中,AI 控制器采用事件驱动的方式运作,当感知组件察觉到变化时,会主动向蓝图发送通知,而不需要每帧去主动询问。
1. 核心入口节点:On Target Perception Updated (目标感知更新时)
- 触发时机:通常位于 AI 控制器 (AI Controller) 蓝图中。当任何一个特定的目标(Actor)在 AI 的任何一种感官中状态发生改变时瞬间触发。注意,“发现目标”和“丢失目标”都会触发此事件。
2. 节点输出数据拆解
这个节点会递出两个重要的数据包:
- Actor (目标实体):直接告知是“谁”引起了这次感知事件。第一步通常是对其进行类型转换 (Cast) 或标签检测以判断是否为玩家,准备将其写入黑板。
- Stimulus (刺激数据结构):需要使用
Break AIStimulus节点将其拆开,里面包含决定 AI 反应的情报:- Successfully Sensed (成功感知):布尔值。True 代表目标进入感知范围,False 代表目标离开感知范围。必须马上接一个 Branch (分支) 节点判断此值,否则会将“丢失”误判为“发现”。
- Stimulus Location (刺激位置):事件发生时的确切三维坐标。对于听觉极度重要,AI 可读取此坐标写入黑板,让行为树派怪物前往“查看异响”。
- Sensing Class (感知类型):区分是视觉、听觉还是伤害触发的刺激,常用于路由不同的应对模式逻辑。
3. 💡 连招总结:一条标准的感知数据流
一个成熟的战斗 AI 接收感知的标准起手式:
- 事件触发:
On Target Perception Updated节点亮起。 - 验明正身:将输出的
Actor判断是否为玩家或敌对目标。 - 拆解状态:
Break AIStimulus,拉出Successfully Sensed连接到 Branch(分支)判断真假。 - 写入黑板 (大脑记忆):
- 如果为 True (看见了):使用
Set Value as Object把玩家实体存进黑板的目标键中。 - 如果为 False (跟丢了):使用
Clear Value清空黑板对应的目标键。
- 如果为 True (看见了):使用
- 行为树接管:黑板数据一旦变动,行为树里的“装饰器 (Observer Aborts)”就会瞬间察觉,打断当前动作并执行追击/丢失逻辑。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 橙菌!



