98. UE5 GAS RPG 实现技能眩晕效果

我们在技能伤害基类上面设置了对应的负面效果应用的配置项,用来实现技能的负面效果应用。
在这里插入图片描述
在之前实现火球术的负面效果时,我们我们在创建火球时,通过伤害基类上的创建技能配置用于后续应用。
在这里插入图片描述
在火球攻击到敌人时,通过函数库书写的通过配置项应用到目标,我们将所需的配置设置到GE实例上
在这里插入图片描述
然后在AS里应用伤害时,我们去判断当前伤害是否需要应用负面效果,来实现负面效果的应用,然后调用函数实现对GE的添加。
在这里插入图片描述
在实现负面效果时,GE会将对应的负面效果标签应用给目标ASC
在这里插入图片描述
我们可以以此为切入点,通过判断角色的ASC身上的是否包含某个负面标签,来切换动作。

实现负面效果属性

我们在角色基类上面增加一个属性,用于记录当前的角色是否处于眩晕状态

	//当前角色是否处于眩晕状态UPROPERTY(Replicated, BlueprintReadOnly)bool bIsStunned = false;

接着,我们增加保护性的配置,首先是注册监听负面标签变动的函数,然后增加一个眩晕标签变动的回调。我们把设置角色移动速度的配置从敌人的类里搬到了基类,因为角色眩晕时是无法移动的,我们需要去修改角色的最大移动速度。

	//注册用于监听负面标签变动的函数void DeBuffRegisterChanged();//眩晕标签变动后的回调virtual void StunTagChanged(const FGameplayTag CallbackTag, int32 NewCount);//当前角色的最大移动速度UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Combat")float BaseWalkSpeed = 600.f;

然后我们实现监听负面标签变动函数,通过ASC去监听它的标签变动,并绑定眩晕标签变动回调。

void ARPGCharacter::DeBuffRegisterChanged()
{//监听眩晕标签变动AbilitySystemComponent->RegisterGameplayTagEvent(FRPGGameplayTags::Get().DeBuff_Stun, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &ARPGCharacter::StunTagChanged);
}

在眩晕标签变动回调里,我们根据角色身上的对应标签的数量,来设置变量的true或者false

void ARPGCharacter::StunTagChanged(const FGameplayTag CallbackTag, int32 NewCount)
{bIsStunned = NewCount > 0;GetCharacterMovement()->MaxWalkSpeed = bIsStunned ? 0.f : BaseWalkSpeed;
}

接下来,就是需要在玩家角色类和敌人类里,初始化ASC完成后,调用监听函数

void ARPGHero::InitAbilityActorInfo()
{ARPGPlayerState* PlayerStateBase = GetPlayerState<ARPGPlayerState>();check(PlayerStateBase); //检测是否有效,无效会暂停游戏//从playerState获取ASC和ASAbilitySystemComponent = PlayerStateBase->GetAbilitySystemComponent();AttributeSet = PlayerStateBase->GetAttributeSet();//初始化ASCAbilitySystemComponent->InitAbilityActorInfo(PlayerStateBase, this);//触发Actor的技能信息设置回调Cast<URPGAbilitySystemComponent>(AbilitySystemComponent)->AbilityActorInfoSet();//注册监听负面标签变动DeBuffRegisterChanged();...
void ARPGEnemy::InitAbilityActorInfo()
{AbilitySystemComponent->InitAbilityActorInfo(this, this);Cast<URPGAbilitySystemComponent>(AbilitySystemComponent)->AbilityActorInfoSet();//注册监听负面标签变动DeBuffRegisterChanged();...

到这里,眩晕的布尔值可以跟随标签进行变动了,我们可以在动画蓝图中,进行监听此值来修改动画。

在敌人的动画蓝图中,我们将角色实例保存
在这里插入图片描述
然后在动画更新时,来获取角色是否处于眩晕状态。
在这里插入图片描述
接着增加一个切换状态,切换条件就是我们新增的变量
在这里插入图片描述
状态里,我们增加一个Sequence Player,用于设置使用的播放动画。
在这里插入图片描述
接着,在敌人基础动画蓝图继承的子蓝图里,我们对资产进行覆盖
在这里插入图片描述
接着,我们修改玩家动画蓝图,也一样在动画更新时,去更新动画蓝图新增的变量,记录当前的眩晕状态
在这里插入图片描述
然后增加一个眩晕状态,直接将动画拖上来即可,然后增加一个状态别名,不需要每个状态去设置对于它的连线。
在这里插入图片描述
在状态别名里,我们可以设置哪些状态要在眩晕属性为true时,切换到此状态。
在这里插入图片描述
我们记得将Sequence Player的循环动画开启,角色在眩晕时,可以循环播放。
在这里插入图片描述
对于敌人角色,我们还需要修改它们的AI控制器,在角色眩晕状态时,将停止移动和攻击玩家,我们在黑板里增加一个布尔变量,用于记录当前角色是否处于眩晕状态
在这里插入图片描述
在进行攻击执行的上面,我们增加一个黑板装饰器,用于判断此变量
在这里插入图片描述
设置一下顺序
在这里插入图片描述
然后将键查询设置为未设置,如果眩晕属性为true,将执行观察器终止操作。
在这里插入图片描述
如果要测试在闪电链中当前函数是否也能够执行,我们可以在蓝图中,比如技能结束时,给命中目标应用一个创建的负面效果
在这里插入图片描述
我们可以在场景中只保留一个怪,然后运行时打开AI控制器,来查看属性变化。以及角色的动画状态。
在这里插入图片描述

实现角色眩晕状态终止操作

我们之前实现过,通过设置标签来阻止玩家的输入,教程里是通过在应用负面Buff时,给ASC增加对应的标签,我这里考虑不方便修改,所以,准备另辟蹊径,通过使用一个自动触发的技能来实现。
我们基于自定义的技能基类创建一个技能类,这样,在设置给角色是,它能够顺利的添加的角色身上。
在这里插入图片描述
我们这里新增加了一个技能标签,然后在Cancel Abilities with Tag里设置了所有主动技能的标签,在技能激活时,含有这些标签的技能都将被结束激活。
接着,我们将玩家操作对应的标签设置给ASC,玩家在眩晕状态进行这些操作时,将无法触发。
在这里插入图片描述
接着,就是重点,我们在触发器这里,增加一个索引,来监听负面标签是否存在,如果存在,此技能将自动激活,Trigger Source设置为Owned Tag Present,如果角色身上存在此标签,技能将处于激活状态,在失去此标签时,技能也将被终止。
在这里插入图片描述

增加Niagara系统用来表现眩晕状态

按照之前火焰的负面效果灼烧的做法,我们再声明一个系统,用于定义眩晕的表现效果
在这里插入图片描述
在初始化时,创建对应的组件
在这里插入图片描述
我们专门实现了一个负面组件,用于即插即用的组件,如果需要添加一个,直接在类上面创建即可,在类上面,我们会监听对应的标签变动,来实现对应的表现效果的显示和隐藏。
在这里插入图片描述
就这样,实现了对应的效果。

实现敌人持续受击效果

在敌人受到闪电链的攻击时,它将会受到一秒十次的攻击,所以受击也会一秒触发十次,效果不是很好,所以,我们将实现一个持续受击状态,在持续受击时,敌人将不在触发受击,而是持续播放循环受击效果。

我们在角色基础类里增加一个变量,设置为可复制,在多端都可以展示对应的效果。

	//当前角色是否处于持续攻击状态UPROPERTY(Replicated, BlueprintReadOnly)bool IsBeingShocked = false;

在战斗接口里,增加两个函数,用于设置和获取参数

	/*** 获取角色是否处于闪电链攻击状态* @return 布尔值,如果处于返回true*/UFUNCTION(BlueprintNativeEvent, BlueprintCallable)bool IsBeingShocked() const;/*** 设置角色是否处于闪电链攻击状态* @param bInShock */UFUNCTION(BlueprintNativeEvent, BlueprintCallable)void SetIsBeingShocked(bool bInShock);

在角色基类里覆写一下

	virtual void SetIsBeingShocked_Implementation(bool bInShock) override;virtual bool IsBeingShocked_Implementation() const override;

实现函数

void ARPGCharacterBase::SetIsBeingShocked_Implementation(bool bInShock)
{IsBeingShocked = bInShock;
}bool ARPGCharacterBase::IsBeingShocked_Implementation() const
{return IsBeingShocked;
}

在AS里设置敌人受击时增加额外的判断,判断当前目标是否处于持续受击状态
在这里插入图片描述
编译打开UE,我们在敌人基础动画蓝图里,在动画更新回调里增加对持续受击变量的获取
在这里插入图片描述
增加一个持续受击的状态切换
在这里插入图片描述
我们通过获取变量设置它的切换
在这里插入图片描述
然后在子动画蓝图里去设置实际使用的动画,记得播放器要设置循环播放
在这里插入图片描述
接下来,我们在命中目标后,如果目标继承了战斗接口,我们将其持续受击状态设置为true
在这里插入图片描述
额外目标也需要设置
在这里插入图片描述
记得在技能结束时,我们将其持续受击状态设置为false
在这里插入图片描述
将额外目标状态取消
在这里插入图片描述

实现眩晕效果

我们将在闪电链技能结束时,给主要目标施加一个眩晕效果。
所以,在技能结束,取消受击后,我们应用一个配置给目标
在这里插入图片描述
然后接着测试,查看技能结束是否显示眩晕
在这里插入图片描述
接着升级一级技能,查看是否能够扩散
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

68 Netty

68 Netty 参考资料 【硬核】肝了一月的Netty知识点 概念 Netty 是一个高性能、异步事件驱动的网络应用框架&#xff0c;简化了 Java 网络编程&#xff0c;适用于构建高效、可扩展的网络服务器和客户端。 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架&#xff0c;使…

Premiere半色调动漫风格视频叠加特效素材MOGRT

Premiere Pro 半色调叠加素材视频模板&#xff0c;使用这个半色调效果轻松设置视频或图像的样式。可以使用自定义选项&#xff0c;让工作流程更加高效。 特征&#xff1a; 15个半色调叠加效果。 Adobe Premiere Pro 2023 4K分辨率&#xff08;38402160&#xff09;。 包括视频…

回溯法与迭代法详解:如何从手机数字键盘生成字母组合

在这篇文章中&#xff0c;我们将详细介绍如何基于手机数字键盘的映射&#xff0c;给定一个仅包含数字 2-9 的字符串&#xff0c;输出它能够表示的所有字母组合。这是一个经典的回溯算法问题&#xff0c;适合初学者理解和掌握。 问题描述 给定一个数字字符串&#xff0c;比如 …

TikTok流量不好是为什么?是网络没选对吗?

很多人发现他们的TikTok视频观看量不高&#xff0c;点赞和分享率也低&#xff0c;就会开始怀疑是不是网络选择不当导致了这一问题。虽然网络确实是导致流量不佳的一大原因之一&#xff0c;但也不能忽视其他因素&#xff0c;包括内容质量、时机选择、互动参与等方面。本文将揭示…

桌面运维转网络要做什么准备,高级网工学习路线分享_运维转网络工程师好转岗吗

如果你的船不进来&#xff0c;请游过去。 做过桌面运维的朋友都知道&#xff0c;这个岗位相当于做牛做马。我做桌面运维的时候要修监控门禁&#xff0c;消防报警广播音响&#xff0c;还要懂暖通空调下水管道疏通&#xff0c;电梯保养与维护&#xff0c;我听到有些同行还得会修桌…

数据采集崩溃恢复:保障业务稳定运行的关键技术特性

一、场景描述 在当今信息时代&#xff0c;数据已成为企业核心竞争力的重要组成部分。对于许多企业而言&#xff0c;数据的采集、处理和分析至关重要。然而&#xff0c;在数据采集和处理过程中&#xff0c;系统崩溃或故障是无法避免的现象。如何在数据采集过程中确保数据的完整…

计量校准公司对校准工程师,会有什么资质要求?

计量校准是指利用一些计量校准工具&#xff0c;对机器、仪器等进行测量和校准。来实现基本功能的正常使用。计量校准安排&#xff0c;是指根据委托方的要求&#xff0c;按照计量器具校准标准&#xff0c;向社会提供计量器具校准服务的安排。今天&#xff0c;我们就来看看计量校…

腾讯音乐:从 Elasticsearch 到 Apache Doris 内容库升级,统一搜索分析引擎,成本直降 80%

导读&#xff1a; 为满足更严苛数据分析的需求&#xff0c;腾讯音乐借助 Apache Doris 替代了 Elasticsearch 集群&#xff0c;统一了内容库数据平台的内容搜索和分析引擎。并基于 Doris 倒排索引和全文检索的能力&#xff0c;支持了复杂的自定义标签计算&#xff0c;实现秒级查…

24最新新手入门指南:Stable Diffusion!

前言 Stable Diffusion&#xff0c;一款新兴的开源AI绘画软件&#xff0c;正逐渐成为数字艺术家和爱好者的新宠。它的强大功能让用户能够轻松创造出令人印象深刻的数字艺术作品。 无论你是专业艺术家还是艺术新手&#xff0c;Stable Diffusion都为你提供了一个探索创造力的新…

如何卸载电脑上的软件?电脑软件彻底删除的3个常见方法(强力卸载注册表)

电脑使用久了&#xff0c;难免会遇到卡顿&#xff0c;运行不流畅的情况&#xff0c;这属于正常现象。造成电脑卡顿的很大部分原因就是因为电脑安装了太多软件了&#xff0c;特别是一些“来路不明”的软件容易影响电脑运行速度。使用电脑时&#xff0c;定期清理电脑垃圾&#xf…

这本书有亿点厉害!带你快速入门扩散模型,从原理到实战!!-《扩散模型从原理到实战》

AIGC爱好者有福了&#xff0c;快看看这本《扩散模型》 书名&#xff1a;《扩散模型&#xff1a;从原理到实战》 作者&#xff1a; 李忻玮等 适合人群&#xff1a; 对扩散模型感兴趣的AI研究人员&#xff1b;有使用AIGC生成图片需求的从业人员&#xff1b;对stable Diffusi…

小米13工程固件预览 修复底层分区 修复nv损坏主板电阻 默认开启diag端口

机型名称 :小米 13【用于以下型号的小米机型:2211133G, 2211133C】机型代号 :fuxi 小米13搭载高通骁龙 8 Gen2八核处理器,预装miui14操作系统;后置5000万像素主镜头+1200万像素超广角镜头+1000万像素长焦镜头,前置3200万像素摄像头;搭载4500毫安时容量不可拆卸电池…

邮件营销案例成功技巧:如何打动目标客户?

邮件营销案例分析成功策略&#xff1f;有哪些优质邮件营销案例&#xff1f; 企业不仅能够与目标客户建立联系&#xff0c;还能有效地推动销售和提升品牌忠诚度。MailBing将通过多个邮件营销成功案例&#xff0c;探讨如何打动目标客户&#xff0c;并分享一些实用的技巧。 邮件…

Rad Studio 12.2 出来了

RAD Studio 12.1之后5个月&#xff0c;RAD Studio 12之后10个月&#xff0c;新发布的RAD Studio12.2加入了客户的反馈&#xff0c;利用人工智能能力的编码支持&#xff0c;64-bit版本的编译器等先进的功能&#xff0c;为应用开发提供更强有力的支持。 本文介绍了RAD Studio 12…

JS 运算符

目录 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后置自增对比 3. 比较运算符 3.1 字符串比较 4. 逻辑运算符 4.1 案例 5. 运算符优先级 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后…

圈子系统APP小程序H5该如何设置IM?

搭建圈子系统的常见问题,以及圈子论坛系统的功能特点 社交圈子论坛系统的概念 圈子小程序源码 多客圈子系统 圈子是什么软件 跟进圈一个系统的软件 为圈子系统APP小程序H5设置IM&#xff08;即时通讯&#xff09;&#xff0c;需要遵循一系列步骤来确保通讯功能的稳定、安全和高…

magic-html : 通用HTML数据提取器!DocAI:从非结构化文档中提取结构化数据!强大、快速、开源的微信机器人底层框架:wcf.js!

magic-html : 通用HTML数据提取器&#xff01;DocAI&#xff1a;从非结构化文档中提取结构化数据&#xff01;强大、快速、开源的微信机器人底层框架&#xff1a;wcf.js&#xff01; magic-html : 通用HTML数据提取器 magic-html提供了一套工具&#xff0c;能够轻松地从HTML中…

水凝胶制造新突破,DIW 技术来助力,打印参数很关键

大家好&#xff01;今天我们来了解一篇《Innovations in hydrogel-based manufacturing: A comprehensive review of direct ink writing technique for biomedical applications》发表于《Advances in Colloid and Interface Science》。水凝胶因其独特性质在多领域备受关注&a…

STL之set、map的使用

STL之set、map 1. 序列式容器和关联式容器2. set系列的使⽤参考文档链接&#xff1a;2.1 set的介绍&#xff08;2&#xff09;set的增删查2.2 multiset的介绍 3 map3.1 参考文档3.2 map类的介绍3.3 pair类型介绍3.4 map的构造3.6 map的数据修改3.7 multimap和map的差异 1. 序列…

解锁未来新技能——揭秘人工智能工程师证书!

为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实施人才强国战略和创新驱动发展战略&#xff0c;加强全国数字化人才队伍建设&#xff0c;持续推进人工智能从业人员…