UE4中UPawnSensingComponent组件的使用(视觉,听觉)

前言

UPawnSensingComponent组件,可以快速帮助我们构建角色感官功能,在编写AI时非常有用!借助此组件,我们可以轻松的为角色(一般是非玩家操控角色如怪物NPC等)添加“眼睛”和“耳朵”,使得角色可以看到目标和听到声音。
请发挥你的想象,这只是功能性组件!
我们将在C++中使用它,请注意!

步骤:

1.首先构建了两个Character角色类(这并不是绝对的,你当然可以选择任意Actor),然后在蓝图中扩展角色类,主角玩家增加了移动操控逻辑,NPC角色可以不添加任何位移逻辑。

 

2.明确NPC观察主角信息,所以感官组件应该添加到NPC身上。而在主角身上添加噪音发生器(视觉无需增加,场景中渲染已经可以进行视觉判定)

 

3.在NPC对象的头文件中加入UPawnSensingComponent组件,并声明事件代理函数
UPROPERTY()
class UPawnSensingComponent* SensingCom;
//动态绑定函数切记需要添加函数标记宏
UFUNCTION()
void OnSeePlayer(APawn* Pawn);
UFUNCTION()
void OnHearNoise(APawn* PawnInstigator, const FVector& Location, float Volume);
4.在NPC构造函数中初始化组件,并设置必要参数(参数内容请自行查阅)CPP文件中
SensingCom = CreateDefaultSubobject(TEXT("SensingCom"));
SensingCom->LOSHearingThreshold = 1200;
SensingCom->SetPeripheralVisionAngle(60.0f);
SensingCom->HearingThreshold = 600;
SensingCom->SightRadius = 2000;
5.在主角头文件中UPawnNoiseEmitterComponent组件
UPROPERTY()
class UPawnNoiseEmitterComponent* NoiseEmitterCom;
6.在主角构造函数中初始化组件
NoiseEmitterCom = CreateDefaultSubobject(TEXT("NoiseEmitter"));
7.构建完成后,将函数实现。基本已经调节完毕,编译工程,将NPC放入场景中。如无任何问题,点选场景中的NPC将会看到NPC身上增加了3种辅助线(视觉范围,无障碍听觉范围,障碍听觉范围)

 

8.在角色中,发声的回调函数中(可绑定到动画通知事件中)调用函数MakeNoise即可,此函数为AActor类中函数,填入对应参数即可
void AActor::MakeNoise(float Loudness, APawn* NoiseInstigator, FVector NoiseLocation, float MaxRange, FName Tag)
9.测试工程,如角色在NPC视觉范围内,函数OnSeePlayer将会被调用通知(通知间隔可调)。当角色发出声音,并且在NPC听觉范围内,函数OnHearNoise将被调用

UE版本 V4.18.3

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注