PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能 。它为 AI 提供了基础 的感知能力,允许它们在游戏中做出智能反应,如检测玩家位置、追踪目标等。功能 :视觉感知、听觉感知、视锥角度主要属性 :SightRadius(视觉半径):控制 Pawn 能看到的最大距离。SensingInterval(感知间隔):设置每次感知的时间间隔,减少感知的频率来优化性能。HearingThreshold(听觉阈值):AI 需要检测的最低噪音水平。PeripheralVisionAngle:定义视觉的视野角度。
void  SetTargetActor ( AActor*  NewTarget) ; 
UPROPERTY ( VisibleAnywhere,  Category =  "Components" ) 
UPawnSensingComponent*  PawnSensingComp; UPROPERTY ( VisibleAnywhere,  BlueprintReadOnly,  Category =  "Components" ) 
USAttributeComponent*  AttributeComp; UFUNCTION ( ) 
void  OnPawnSeen ( APawn*  Pawn) ; 
PawnSensingComp =  CreateDefaultSubobject< UPawnSensingComponent> ( "PawnSensingComp" ) ; void  ASAICharacter :: OnPawnSeen ( APawn*  Pawn) 
{ SetTargetActor ( Pawn) ; } 
void  ASAICharacter :: SetTargetActor ( AActor*  NewTarget) 
{ AAIController*  AIC =  Cast< AAIController> ( GetController ( ) ) ; if  ( AIC) { AIC-> GetBlackboardComponent ( ) -> SetValueAsObject ( "TargetActor" ,  NewTarget) ; } 
} 
委托绑定初始化 void  ASAICharacter :: PostInitializeComponents ( ) 
{ Super :: PostInitializeComponents ( ) ; PawnSensingComp-> OnSeePawn. AddDynamic ( this ,  & ASAICharacter:: OnPawnSeen) ; AttributeComp-> OnHealthChanged. AddDynamic ( this ,  & ASAICharacter:: OnHealthChanged) ; 
} 
在观察AI角色移动时,我们注意到AI角色在转向时是一下就转到就看到的角色方向,非常突兀。为了优化,可以在MovementComponent组件里勾选使用控制器所需的旋转 。该选项将使角色按照旋转速率平滑 地旋转到目标角度。 想使上述选项生效,还需取消勾选自身细节面板里的使用控制器旋转Yaw ,这样AI控制器不再强制设置角色当前的Yaw,实现Movement组件完全控制角色的旋转。*