欢迎光临散文网 会员登陆 & 注册

UE学习记录:声音/角色死亡/UI

2023-08-05 20:55 作者:西村啪啪二  | 我要投稿

声音

首先攻击弹道添加一个飞行时的音效,新建音效Sound Cue,选中要添加的音频,编辑器里右键添加声波播放器,可以在输出中的衰减设置里重载衰减对其进行设置。这里我们到Audio文件夹中创建一个音效衰减,再去Sound Cue中分配它。

再添加一个爆炸音效,可以同时选择两个音频,在Sound Cue中分配时右键添加随机播放。为了使每次爆炸的效果更加随机,再添加一个调制器节点,该节点可随机改变音高和音量。

角色死亡

在RGAttributeActorComponent类中添加IsAlive函数并用const标记(只读)

在角色蓝图左侧变量中添加一个bool变量,命名bIsAlive,在AnimGraph中添加一个按布尔姿势混合节点,将bIsAlive接入Active Value,False接入指定播放动画,True为原有接入。在事件图表中调用RGAttributeActorComponent类中添加的IsAlive函数为变量bIsAlive赋值。

禁用对角色的控制

在RGCharacter类中添加如下代码,使角色死亡后玩家失去控制权

UI显示受伤时血量

在UI文件夹下添加控件蓝图命名DamagePopup_Widget,在设计器中拖入一个文本框,将其位置设置到左上角,“Is Variable”便于后续访问。

在图表中进行逻辑设计,首先事件在每一帧进行监控,我们需要在攻击Overlap某个对象且造成伤害时(对象有AttributeComp)显示该文本,因此我们需要一个变量来记录这个对象,在“图表”中创建一个变量AttachTo,变量类型设置为Actor,勾选“可编辑实例”和“生成时公开”以便在其他蓝图传递该变量。我们需要用到“将场景投射到屏幕(Project World To Screen)”节点将给定的3D空间点(这里为Overlap的Actor)转换为2D屏幕的坐标,由于在不同的分辨率下文本的显示位置会不一样,我们将通过“获取视口缩放”节点来获取DPI缩放值,来矫正UI显示位置。

DamagePopup_Widget 图表

      设置UI在显示3s后消失:

DamagePopup_Widget图表

到BP_RgTargetDummy蓝图中的AttributeComp组件中添加OnHealthChanged事件,创建该控件。在DamagePopup_Widget中添加指向Actor的AttachTo变量,就是为了在这里添加Self节点,将BP_RgTargetDummy传入进去,这样,在BP_RgTargetDummy触发OnHealthChanged事件时,就会显示文本。

BP_RgTargetDummy蓝图


UE学习记录:声音/角色死亡/UI的评论 (共 条)

分享到微博请遵守国家法律