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

前言

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

步骤:

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

 

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

 

3.在NPC对象的头文件中加入UPawnSensingComponent组件,并声明事件代理函数

1

2

3

4

5

6

7

UPROPERTY()

class UPawnSensingComponent* SensingCom;

//动态绑定函数切记需要添加函数标记宏

UFUNCTION()

void OnSeePlayer(APawn* Pawn);

UFUNCTION()

void OnHearNoise(APawn* PawnInstigator, const FVector& Location, float Volume);

4.在NPC构造函数中初始化组件,并设置必要参数(参数内容请自行查阅)CPP文件中

1

2

3

4

5

SensingCom = CreateDefaultSubobject(TEXT("SensingCom"));

SensingCom->LOSHearingThreshold = 1200;

SensingCom->SetPeripheralVisionAngle(60.0f);

SensingCom->HearingThreshold = 600;

SensingCom->SightRadius = 2000;

5.在主角头文件中UPawnNoiseEmitterComponent组件

1

2

UPROPERTY()

class UPawnNoiseEmitterComponent* NoiseEmitterCom;

6.在主角构造函数中初始化组件

1

NoiseEmitterCom = CreateDefaultSubobject(TEXT("NoiseEmitter"));

7.构建完成后,将函数实现。基本已经调节完毕,编译工程,将NPC放入场景中。如无任何问题,点选场景中的NPC将会看到NPC身上增加了3种辅助线(视觉范围,无障碍听觉范围,障碍听觉范围)

 

8.在角色中,发声的回调函数中(可绑定到动画通知事件中)调用函数MakeNoise即可,此函数为AActor类中函数,填入对应参数即可

1

void AActor::MakeNoise(float Loudness, APawn* NoiseInstigator, FVector NoiseLocation, float MaxRange, FName Tag)

9.测试工程,如角色在NPC视觉范围内,函数OnSeePlayer将会被调用通知(通知间隔可调)。当角色发出声音,并且在NPC听觉范围内,函数OnHearNoise将被调用

UE版本 V4.18.3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值