【AI笔记】UE5 AI感知组件 (AIPerception) 笔记

一、 系统概述

AI 感知组件(AIPerception)就像是怪物的“五官”,它负责接收外界的刺激(如玩家的身影、枪声或受到的攻击),并将这些信息转化为可以被行为树处理的数据。引擎内置了多种感官(Senses),每种感官都有一套专属的参数来精细控制其侦测能力。核心感官主要包括视觉感知 (Sight)听觉感知 (Hearing) 以及伤害感知 (Damage)


二、 视觉感知 (Sight) 核心参数配置

在 UE5 中,视觉并不是简单地画一条射线检测,而是通过构建一个具有空间体积的**“视野扇形(Vision Cone)”**来进行综合判定的。

1. 基础视力参数

参数名称 核心机制与含义 策划核心逻辑 & 实战表现
视线半径 (Sight Radius) AI 能够首次发现目标的绝对最大距离。 决定怪物视野长度的基准线。
失去视线半径 (Lose Sight Radius) 当 AI 发现目标后,目标需要逃离多远才会“丢失”视觉信号。 ⚠️ 必须 ≥ 视线半径。二者差值形成缓冲带,防止玩家在边界往返跑时导致 AI 频繁切换状态的“边缘抽搐(Jittering)”。
边缘视觉半角 (Peripheral Vision Half Angle) 决定 AI 视野宽度。代表从 AI 正前方(Forward Vector)向左右各展开的角度。 例如:设置 90 度,总视野即为 180 度;设置 45 度,总视野为 90 度(适合视野受限的怪物)。
到上个已见位置的自动成功范围 在该距离范围内,AI 会无视视野角度,强制判定看到目标。 “防穿模/防近身盲区”机制。防止玩家贴紧怪物背后“秦王绕柱走”而完全不被发现。

2. 进阶机制参数

参数名称 核心机制与含义 避坑指南 & 实战应用
视点向后偏移 (Point of View Backward Offset) 把生成“视野扇形”的起点,向怪物的脑后(甚至身体后方)拉动一段距离。 常用于巨大体型的怪物(如巨龙),防止玩家紧贴怪物胸口或脚底时处于视线起点之后,导致视野判定穿模失效。
接近剔除半径 (Near Clipping Radius) 怪物的**“绝对盲区”**。只要目标进入极近的范围内,AI 就会彻底看不见。 适合制作特殊机制的怪物(如:狙击手盲区、巨大机甲的脚底盲区)。
最大年龄 (Max Age) AI 的**“短期记忆时长”**(单位:秒)。 设置时间 > 0:玩家脱离视野后,AI 依然能记住位置。 设置 0(默认):玩家一旦离开视线,AI 立刻失忆。
按归属检测 (Detection by Affiliation) AI 的敌我识别系统 (IFF),包含检测敌人、中立、友军。 🔥 策划终极避坑:若未在 C++ 中配置队伍 ID,所有 Pawn 互作**“中立(Neutral)”**阵营。99% 的视而不见 Bug 都是因为没有勾选“检测中立”!

三、 感知事件的入口节点与数据流

在 UE5 中,AI 控制器采用事件驱动的方式运作。当感知组件察觉到变化时,会主动向蓝图发送通知,不需要每帧主动询问。

1. 核心入口节点:On Target Perception Updated (目标感知更新时)

  • 触发时机:通常位于 AI 控制器 (AI Controller) 蓝图中。当任何一个特定的目标(Actor)在 AI 的任何一种感官中状态发生改变时瞬间触发。
  • 注意点:“发现目标”和“丢失目标”都会触发此事件!

2. 节点输出数据拆解

这个节点会递出两个重要的数据包,具体拆解如下:

数据包类型 内部数据引脚 核心机制与实战用法
📦 Actor (目标实体) N/A 直接告知是“谁”引起了感知事件。第一步通常是进行类型转换 (Cast)或标签检测以判断是否为玩家,准备写入黑板。
📦 Stimulus (刺激结构体) (需使用 Break 节点拆开) Successfully Sensed (成功感知) 布尔值。True = 进入感知范围;False = 离开感知范围。 🚨 必须马上接一个 Branch (分支) 节点判断此值,否则会将“丢失”误判为“发现”。
Stimulus Location (刺激位置) 事件发生时的确切三维坐标。 对于听觉极度重要,AI 可读取此坐标写入黑板,让行为树派怪物前往“查看异响”。
Sensing Class (感知类型) 区分刺激来源(视觉、听觉还是伤害等)。 常用于路由判定(如:视觉触发战斗追击,听觉触发潜行警觉)。