79. UE5 RPG 创建技能冷却和消耗

在这一篇里面,我们接着优化技能,现在角色添加的主动技能能够同步到ui上面。我们在这一篇文章里面,完善技能的消耗(释放技能减少蓝量)和冷却机制。

我们可以看到,在技能类默认值这里,可以设置它的冷却和消耗的GE

所以,我们接下来,将通过GE实现对技能的冷却和消耗的设置。

添加技能消耗GE

我们首先创建一个蓝图,选取的父类为Gameplay Effect

将其命名为GE_Cost_FireBolt,意为火球术的消耗

消耗我们持续时间选用Instant即可

然后我们增加一个Modifiers,减少角色的蓝量,每次使用技能减少20

一个简易的消耗GE制作完成,我们将其应用给技能

接下来,我们还要在技能里调用Commit Ability节点,这个节点会将扣除技能所需的蓝量,如果有冷却,会将技能进入冷却时间

Commit Ability是扣除蓝量和冷却的一个统一节点,当然,你也可以分开,有单独扣除消耗和冷却的节点

运行测试效果

分析CommitAbility

首先我们判断如果没有足够的蓝量,技能会不会被激活,我们在处理消耗之前,打印一个数据

如果蓝量足够,能够成功打印,而如果蓝量无法支持技能的释放,将无法打印,证明如果没有足够的资源,将不会进入技能,而不是由Commit Ability来判断,Commit Ability只是用来消耗资源的节点。

我们查看源码,它调用的代码为K2_CommitAbility

里面调用了CommitAbility来实现逻辑,然后检查是否消耗足以提供给技能,并调用函数扣除资源

CommExecute为扣除资源函数,内部调用了扣除资源和冷却

看一下应用冷却,会获取技能等级,并将GE应用给了ASC

应用资源消耗同理,也是获取了技能等级

设置技能等级消耗不同的蓝量

现在,我们知道了使用技能消耗,可以通过技能等级来修改它的消耗的蓝量,我们可以通过表格来定义不同的等级,蓝量的消耗。

所以我们创建一个新的曲线表格,用于设置不同等级的技能的蓝量消耗

创建一个曲线表格,类型选择Constant,将每一级的蓝量消耗设置为固定值

命名为CT_Cost

在内部添加火球术1级到10级的技能蓝量消耗

然后在GE这里使用曲线表格,选择创建的这一行,并将数值设置为-1

接着在代码里面将初始技能的等级修改掉,用来测试

释放一个技能后,蓝量是之前的三倍之多,证明设置的没有问题

添加技能冷却

技能冷却的实现原理是通过在冷却阶段给ASC应用了一个冷却标签,在冷却标签存在的时间内是无法再次使用此技能。

所以,我们要实现冷却,先创建一个冷却使用的标签

cpp 复制代码
FGameplayTag Cooldown_Fire_FireBolt; //火球术冷却标签

然后注册到标签管理器

cpp 复制代码
	GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
		.AddNativeGameplayTag(
			FName("Cooldown.Fire.FireBolt"),
			FString("火球术冷却标签")
			);

创建一个火球术冷却GE

将GE修改为具有时效性的Has Duration

这里看到,冷却时间可以使用我们之前修改数值的多种方式去设置,这里我们使用最简单的,直接设置1s

这里我们不需要修改角色相关内容,只需要在此GE生效时,给ASC增加冷却标签,我们添加一个Target Tags Gameplay Effect Component

通过此组件给Actor添加一个冷却标签,将我们创建的冷却标签添加上去

然后在技能里将冷却应用

运行测试,发现,我们只能在一秒内释放一次技能。

角色技能我们一般只对一个角色生成一个实例,为了防止客户端在技能未触发就关闭了技能,我们将在技能的蒙太奇动画结束或者混出的被强制取消时,结束技能,并在技能结束时,能够继续播放蒙太奇。

我们还需要将Retrigger Instanced Ability开启,它将再次触发时,关闭之前的触发。

后续:现在我们有了消耗,也能正确的显示到了UI上面,但是冷却还没有实现使用技能后,技能UI上面无法显示技能冷却的进度,我们将在后续实现监听冷却技能的变动,并显示到UI上面。

相关推荐
AA陈超3 天前
虚幻引擎UE5专用服务器游戏开发-20 添加基础能力类与连招能力
c++·游戏·ue5·游戏引擎·虚幻
平行云4 天前
如何实现UE程序大并发多集群的像素流部署
unity·ue5·图形渲染
我的巨剑能轻松搅动潮汐4 天前
UE5 C++ 下载视频到本地。//BindLambda用法解析
ue5
不爱说话的采儿5 天前
UE5详细保姆教程(第四章)
笔记·ue5·游戏引擎·课程设计
二DUAN帝5 天前
UE实现路径回放、自动驾驶功能简记
人工智能·websocket·机器学习·ue5·自动驾驶·ue4·cesiumforue
温玉琳琅6 天前
【UE5】虚幻引擎小百科
ue5·游戏引擎·虚幻
远离UE47 天前
UE 材质 变体 概念
ue5·材质
吴梓穆9 天前
UE5 重新编译插件版本
ue5
HECUgauss9 天前
UE5 使用过程遇到的问题
ue5
小白学过的代码9 天前
ue5.4和webul通信
开发语言·javascript·ue5