【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 接收感知的标准起手式:

  1. 事件触发On Target Perception Updated 节点亮起。
  2. 验明正身:将输出的 Actor 判断是否为玩家或敌对目标。
  3. 拆解状态Break AIStimulus,拉出 Successfully Sensed 连接到 Branch(分支)判断真假。
  4. 写入黑板 (大脑记忆)
    • 如果为 True (看见了):使用 Set Value as Object 把玩家实体存进黑板的目标键中。
    • 如果为 False (跟丢了):使用 Clear Value 清空黑板对应的目标键。
  5. 行为树接管:黑板数据一旦变动,行为树里的“装饰器 (Observer Aborts)”就会瞬间察觉,打断当前动作并执行追击/丢失逻辑。