11. UE5 RPG使用GameplayEffect修改角色属性(二)

上一篇写了一下GameplayEffect的基础操作,这一篇进阶一下,讲解一下GameplayEffect堆叠功能,以及能够基于这个堆叠能够实现一些怎样的效果。

经过几天的查看,发现新版的更新的真不错,而且最上面竟然直接显示编译的错误,不需要编译后查看。
在这里插入图片描述

多个GameplayEffect堆叠的效果

上面我们设置的GE如果使用多个,每个会单独的去运行效果,会出现叠加回血的效果。而在英雄联盟这个游戏里面,我们会发现,角色使用药瓶不会出现多个药瓶同时使用,而是一个药瓶使用完成以后,才会继续使用第二个药瓶。在GameplayEffect里面,我们也可以实现同样的效果。
设置这一项,我们可以找到Stacking这一个配置,这是一个专门处理效果叠加的属性,如果为None,默认效果,每次添加效果之间互不影响。
在这里插入图片描述
如果选择Source或者Target
在这里插入图片描述
比如我设置Stack Limit Count 为3,选择Source,那么角色可以对每个目标叠加三层效果。但是如果你选择的是Target,那么就是不管多少人对目标叠加了多少层效果,目标身上只能叠加三层效果。
在这里插入图片描述
Stack Duration Refresh Policy 叠加效果时,是否更新持续时间 Duration
Refresh on Successfull Application: 叠加效果时,刷新持续时间,即使层数不增加也会更新。
Never Refresh: 即使叠加效果,也不会刷新。
Stack Period Reset Policy 叠加效果时,是否更新周期时间 Period
Refresh on Successfull Application:叠加效果时,每次都会更新周期时间 Period
Never Refresh: 即使叠加效果,也不会刷新。
在这里插入图片描述
Stack Expiration Policy
Clear Entire Stack:Duration结束时清楚所有层数
Remove Single Stack And Refresh Duration:Duration结束时减少一层,然后重新经历一个Duration,一直持续到层数减为0
Refresh Duration:Duration结束时再次刷新Duration,这相当于无限Duration,可以通过调用

void FActiveGameplayEffectsContainer::OnStackCountChange(FActiveGameplayEffect& ActiveEffect, int32 OldStackCount, int32 NewStackCount)

来处理层数,可以达到Duration结束时减少两层并刷新Duration这样复杂的效果。
在这里插入图片描述
上面的属性用来控制效果叠加,那么如果效果叠加满了溢出了怎么办,官方也有解决方案。
就是Overflow属性的配置
OverflowEffects:超过StackLimitCount数量的Effect被Apply时将会调用该OverflowEffects,可以设置多个
DenyOverflowApplication:对应于StackDurationRefreshPolicy,如果为True则多余的Apply不会刷新Duration
ClearStackOnOverflow:当DenyOverflowApplication为True是才有效,当Overflow时是否直接删除所有层数
在这里插入图片描述

5.3的GameplayEffect的新组件

在5.3版本中,GameplayEffect将一些组件模块化并封装到了Components里面,
在这里插入图片描述
一共十一个组件,接下来罗列一下每个组件的功能
Abilities Gameplay Effect component
这个组件主要是在GameplayEffect激活时,可以向目标添加的GameplayAbility
在这里插入图片描述
Addtional Effects Gameplay Effect Component
当此效果添加时或完成时,需要额外添加的效果。
On Appliaciton Gameplay Effects 在添加此效果时,额外添加的效果
On Complete Always 当此效果完成时,不管正常结束还是不正常结束时,添加的效果
On Complete Normal 当此效果正常结束时,添加的额外的效果
On Complete Prematurely 当此效果提前结束时,添加的额外的效果
在这里插入图片描述
Asset Tags Gameplay Effect Component
在添加此GE时,需要额外处理的标签(添加 和 删除),这个标签将放置在GE上面,只是作为一个GE的标记
在这里插入图片描述
Block Ability Tags Gameplay Component
添加或删除能够阻挡技能的Tags的组件,这些Tags会在GE运行时添加到Actor身上,用于阻挡其它拥有此Tag的GE或者GA的激活。
在这里插入图片描述
Chance to Apply Gameplay Effect Component
当前GE应用到Actor身上的几率,0为百分之0几率,1为百分之百几率
在这里插入图片描述
Custom Can Apply Gameplay Effect Component
自定义能够应用GE的组件,可以自定义条件来设置应用是否成功。
在这里插入图片描述
Gameplay Effect UIData Text Only
用于配置GE的UI信息,这里只有一个简单的TEXT,有需要的可以派生UGameplayEffectUIData类去添加自己需要的数据信息
在这里插入图片描述
Immunity Gameplay Effect Component
配置角色免疫其它GE的条件
在这里插入图片描述
Remove Other Gameplay Effect Component
配置移除其它的GE,满足设置的标签或者资源满足条件的GE都会被移除掉。
在这里插入图片描述
Target Tag Requirements Gameplay Effect Component
根据目标的Tag设置当前的GE的状态
Appliaction 为GE添加到目标身上时Tag的状态
Ongoing 为GE激活时Tag的状态
Removal 为GE被删除时Tag的状态
在这里插入图片描述
Target Tags Gameplay Effect Component
添加此GE后,对Actor身上带有的Tag进行操作(添加或删除),这个会随着GE的添加修改,在GE失效时移除。非Instant使用。
在这里插入图片描述

通过属性实现多种效果

上面介绍完了相关属性以后,接下来根据使用场景,罗列一下实现思路。这里不先讲GameplyaCue,只是单纯的罗列一下思路。

  1. 武器大师的被动
    在英雄联盟里面,武器大师的平a可以叠攻击速度,最多可以叠八层。每次平a增加一层被动,每次增加被动刷新持续时间,在一定时间内没有平a,将减少一层被动层数。以下是设置思路
    持续时间设置Has Duration (平a每次都有周期时间)并设置持续时间
    Period 设置为0,时间范围内一直起作用,然后属性修改那里修改攻击速度。
    Stacking Type 设置Aggregate by source或者target都可以,毕竟都是添加到自身。
    Stack Limit Count 设置为8,可以叠8层。
    Stack Duration Refresh Policy 设置为Refresh on Successful Application(每次平A刷新持续时间)
    Stack Period Reset Policy 就随便设置,用不到。
    Stack Expiration Policy 设置为Remove Single Stack And Refresh Duration 在每次一个持续时间到了,只减少一层
    Overflow 不需要设置。

  2. 火男的火焰被动
    火男的火焰被动每次使用技能命中英雄后会叠加被动,造成持续伤害,当被动叠加三层以后会造成火焰爆炸,并清空层数。
    Duration Policy设置为Has Duration (被动有时间限制)并设置持续时间
    Period 设置为1 (每秒造成伤害)
    Execute Periodic Effect on Application 设置为false,添加效果时,不会支持触发伤害
    接下来需要设置伤害数值,这里需要根据自身的属性得出火焰在目标身上的伤害。
    Stacking Type 选择 Aggregate by Source 自身可以在身上挂效果
    Stack Limit Count 设置为2,因为第三层持续伤害被动将被删除
    Stack Duration Refresh Policy 设置为Refresh on Successful Application(每次技能命中刷新持续时间)
    Stack Period Reset Policy 设置为Refresh on Successful Application (每次技能命中以后,也刷新周期时间)
    Stack Expiration Policy 设置Clear Entire Stack 持续时间结束清除所有层数
    OverflowEffects 里添加火焰爆炸的Effect
    DenyOverflowApplication 设置为true,多余的effect不会刷新层数
    ClearStackOnOverflow 设置为true,触发火焰爆炸时,将目标身上的火焰层数清除掉

而火焰爆炸就简单一些,只需要设置持续时间和周期时间都为3秒,然后修改角色属性即可。

  1. 持续回复的血瓶
    英雄联盟里面的血瓶可以实现持续恢复血量,但是一次只能使用一瓶,如果多次使用,将会叠加,一瓶使用完成后,将接着使用,直到血瓶效果结束。
    实现的原理也很简单,其实就是使用一个GameplayEffect设置叠加模式,保证能够正确设置药瓶使用数量和时间,然后设置时接着触发另一个GameplayEffect,这个GameplayEffect用来触发周期性回血,在第一个GameplayEffect失效时,删除周期性回血Effect。
    首先实现设置使用层数的GameplayEffect
    Duration Policy设置为Has Duration
    Duration Magnitude 设置一瓶药的恢复时间
    属性这里添加两个模块,一个添加一个Tag用于标记(这个在GE失效时移除),
    另一个额外附加的GameplayEffect(额外附加的就是回血的GameplayEffect)这个功能就是在应用了此效果后,会将设置的额外的效果应用到目标身上。
    (最新的5.3版本,将多余的功能都合并到了一个数组里面,这样布局也更加清晰,需要什么添加什么模块即可)
    在这里插入图片描述
    修改属性我们不在这个GE里面做,而是在另一个GE里面。

接着使用
Stacking Type 选择 Aggregate by Source 可以堆叠层数
Stack Limit Count 设置为0 可以无限堆叠
Stack Duration Refresh Policy 设置为 Never Refresh 中途吃药也不会刷新,只增加药物层数
Stack Period Reset Policy 不用管,这个没有周期
Stack Expiration Policy 设置为Remove Single Stack And Refresh Duration 在每次一个持续时间到了,只减少一层
Overflow 不需要设置,吃药随便吃咯

另外一个GameplayEffect是回血用的GameplayEffect,我们将持续时间设置为无限,周期时间设置为1s,添加一个模块在actor缺少了相关的Tag时,将自身GE移除。
在这里插入图片描述
每次周期到期时,恢复10点血量,当前效果生效必须有相关tag(其实这一步不是必须)
在这里插入图片描述
堆叠的处理就是只保证有一层效果,多余的层数也不会刷新持续时间,刷新周期时间,额外超出的层数也不做处理。
在这里插入图片描述
总结:使用药瓶添加记录时间的GE,并添加Tag和持续回血的GE,在记录时间的GE到期,将Tag和持续回血的GE移除。

参考文章:
UE5-GAS插件UE5.3改动
虚幻引擎游戏技能系统文档
GameplayEffect(一)功能
虚幻插件GAS分析03-0 GameplayEffect标签面面观-标签栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/363385.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

速过计算机二级python——第一讲:入门python

速过计算机二级python 第一讲:入门python1.安装Python1.下载2.安装3.运行4.代码 2.安装VS code 第一讲:入门python 本讲任务: 安装python安装VS code Python初学者通常首次面临的主要问题是需要在计算机上安装Python和一个适用的代码编辑器…

【ADI 知识库】X 波段相控阵开发平台用户指南1

原文链接:https://wiki.analog.com/resources/eval/user-guides/x-band-platform 产品详情 X波段开发平台包含一个AD9081-FMCA-EBZ AD9081 MxFE评估板、一个ADXUD1AEBZ X/C波段上/下变频器和一个ADAR1000EVAL1Z X/Ku波段模拟波束成形板。目标应用是相控阵雷达、电…

AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长

今天分享的是AIPC系列深度研究报告:《AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长》。 (报告出品方:东兴证券) 报告共计:19页 公司深耕笔电背光模组,主要下游客户为…

vue-head 插件设置浏览器顶部 favicon 图标 - 动态管理 html 文档头部标签内容

目录 需求实现11. 安装插件2. 项目内 main.js 引入3. vue页面使用 实现2其他 需求 vue项目中浏览器页面顶部图标可配置 实现1 使用 vue-head 插件实现 vue-head 插件可实现 html 文档中 head 标签中的内容动态配置(npm 官网 vue-head 插件) 1. 安装插件 …

指针深入了解7

1.qsort的模拟实现(冒泡排序的原型制作) 1.排序整型 int cmp_int(const void* p1, const void* p2) {return *((int*)p1) - *((int*)p2); } void swap(char* p1, char* p2)//完成交换 {int tmp *p1;*p1 *p2;*p2 tmp;} void bubble_sort(void* base,…

“文化IP+AI交互数字人”,创新灯会活动互动形式

近日,数字人“少年李白”化身AI交互数字人,亮相横店影视城梦幻谷仙侠灯会,在现场与文化IP“狄仁杰”跨时空语音交互,为新春灯会带来了全新交互体验。在现场游客还可以向数字人“少年李白”提问,了解唐代历史、民俗风情…

上位机是什么?与下位机是什么关系

在工业自动化领域中,上位机是一项关键而引人注目的技术。许多人对上位机的概念感到好奇,想要深入了解其在工业智能中的作用。那么,上位机究竟是什么呢? 首先,上位机是一种用于工业控制系统的软件应用,通常…

《角斗士2》AI电影高清宣传片

《角斗士2》AI电影高清宣传片 The gladiator returns, a legend reborn in the arenas fires. From the dust of the Colosseum, a new hero shall rise. In the heart of Rome, a battle for freedom and justice shall be waged. The Colosseum roars with the bloodlust …

axios-AJAX入门

定义 概念:AJAX是浏览器与服务器进行数据通信的技术 使用 1.先使用axios库,与服务器进行数据通信 1)基于XMLHttpRequest封装、代码简单、月下载量在14亿次 2)Vue、React项目中都会用到axios 2.再学习XMLHttpRequest对象的使用…

H5 嵌套iframe并设置全屏

H5 嵌套iframe并设置全屏 上图上代码 <template><view class"mp-large-screen-box"><view class"mp-large-screen-count"><view class"mp-mini-btn-color mp-box-count" hover-class"mp-mini-btn-hover" clic…

数据库技术栈 —— B树与B+树

数据库技术栈 —— B树与B树 一、复习二、MySQL中的B树应用 一、复习 B树是多路平衡查找树的意思 参考文章或视频链接[1] 【王道计算机考研 数据结构】 二、MySQL中的B树应用 这篇文章里的计算题还是讲的不错的。 参考文章或视频链接[1] 《探究MySQL的索引结构选型》

计算机系统体系结构

文章目录 计算机系统体系结构1. 什么是计算机体系结构术语解释计算机系统体系结构所涉及的内容简单通用计算机结构计算机指令程序执行过程时钟 2. 计算机的发展机械计算机机电式计算机早期电子计算机微机和PC革命移动计算和云计算摩尔定律乱序执行 3. 存储程序计算机寄存器传输…

APT攻击是什么?如何进行防护

随着网络技术的飞速发展&#xff0c;APT&#xff08;Advanced Persistent Threat&#xff09;攻击已经成为网络安全领域的一个重大问题。APT攻击是一种高度复杂的网络攻击&#xff0c;其目标是长期潜伏并逐步深入到目标网络中&#xff0c;以窃取敏感信息、破坏关键基础设施或制…

如何有效获取 Go 变量类型?探索多种方法

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 小技巧第九篇&#xff0c;系列文章查看&#xff1a;Go 语言小技巧。 文章目录 Go 的类型系统类型获取使用 fmt.Printf类型选择类型选择反射 reflect.TypeOf 其他注意点错误处理性能考量 总结 在 Python 中&#xff0c;可以使…

AI绘画探索人工智能的未来

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-8fL64RHWVzwpzR6m {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

spdk技术原理简介和实践经验

一、导读 与机械硬盘相比&#xff0c;NVMe-ssd在性能、功耗和密度上都有巨大的优势&#xff0c;并且随着固态存储介质的高速发展&#xff0c;其价格也在大幅下降&#xff0c;这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多&…

C语言指针学习(1)

前言 指针是C语言中一个重要概念&#xff0c;也是C语言的一个重要特色&#xff0c;正确而灵活地运用指针可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人都应当深入的学习和掌握指针&#xff0c;也可以说不掌握指针就没有掌握C语言的精华。 一、什么是指针 想弄清楚什…

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)将于2024年6月21-23日在中国厦门举办。 SEAI旨在为软件工程与人工智能领域搭建高端前沿的交流平台&#xff0c;推动产业发展。本次会议将汇聚海内外的知名专家、学者和产业界优秀人才&#xff0c;共同围绕国际热点话题、核…

cesium-场景出图场景截屏导出图片或pdf

cesium把当前的场景截图&#xff0c;下载图片或pdf 安装 npm install canvas2image --save npm i jspdf -S 如果安装的插件Canvas2Image不好用&#xff0c;可自建js Canvas2Image.js /*** covert canvas to image* and save the image file*/ const Canvas2Image (function…

红队渗透靶机:LEMONSQUEEZY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录扫描 1、dirsearch 2、gobuster WEB phpmyadmin wordpress wpscan 登录wordpress 登录phpmyadmin 命令执行 反弹shell 提权 get user.txt 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~…