
GAS
文章平均质量分 57
Gameplay Ability System
axin7c8
这个作者很懒,什么都没留下…
展开
-
Gameplay Ability System(通过GameplayEffect里的Execution修改角色属性)
这个函数将编辑器里设置的参数传进来,然后通过计算再返回出去,这个函数被标记为BlueprintNativeEvent,所以我们可以在自己的类PlayerEffectExecutionCalculation里实现Execute_Implementation函数来计算属性。可以发现,之前的文章里使用的是Modifiers来修改角色生命值属性,这次我们改用Executions来算上角色的护甲,并覆盖了角色的生命值。在头文件里使用父类的宏DECLARE_ATTRIBUTE_CAPTUREDEF来声明要修改的属性。原创 2024-08-25 20:09:39 · 1288 阅读 · 0 评论 -
Gameplay Ability System(通过表配置不同等级的伤害)
1、打开普攻蓝图GAB_MeleeAttack,将随机的普攻等级设置给GameplayEffectLevel,注意随机值一定要先存储为变量才能传出去,否则会出现第一次使用和第二次使用不一样的情况。1、导入为CurveTable的稳定格式,命名为CT_MeleeAttackCurve。1、创建Excel表格,输入数据,表示1级的普攻伤害为5;2级的普攻伤害为15。3、上述设置表示,每次增加 -1 * 配置表里每级相应的伤害数值的血量。3、当然也可以通过记事本直接写成下图这样。2、另存为.csv格式文件。原创 2024-08-24 16:53:07 · 351 阅读 · 0 评论 -
Gameplay Ability System(角色属性夹值)
3、这样就完成了对角色生命值等属性的数值大小限制在0到最大值之间。1、修改角色属性类BaseAttributeSet.h。原创 2024-08-24 16:33:06 · 329 阅读 · 0 评论 -
Gameplay Ability System(通过GameplayEffect修改角色属性)
2、添加按类应用Effect版本的ApplyGameplayEffectToTarget节点,并在接收到普攻事件时执行。1、上图表示持续10S扣血,每秒扣1滴血,注意取消第一次应用时不扣血,否则会导致10S扣了11滴血。例如上图中的设置表示:每当GameplayEffect生效一次时,将角色的Health加上-10。Modifier Op: 修改的计算方式,有加法、乘法、除法。5、此时,每当玩家普攻到敌人时就会修改敌人的生命值属性了。1、打开普通攻击的蓝图类GAB_MeleeAttack。原创 2024-08-24 16:22:21 · 409 阅读 · 0 评论 -
Gameplay Ability System(事件通知)
1、添加Send Gameplay Event to Actor节点,当玩家的武器碰到敌人时发送GameplayEvent。2、给该事件添加Event Tag标签:Ability.MeleeAttack.Damage.Event。1、注意,别忘记在播放蒙太奇动画结束、打断后结束能力,否则会一直接收事件。1、添加Wait Gameplay Event 节点,等待事件触发。3、设置EventReceived引脚:表示事件接收后执行的逻辑。2、设置事件的Tag:与上面发送事件时设置的Tag要相同。原创 2024-08-24 15:48:32 · 828 阅读 · 0 评论 -
Gameplay Ability System(给角色添加属性)
注意:FGameplayAttributeData类型在概述里Attribute有讲过,提供BaseValue与CurrentValue。编译之后可在角色蓝图里看到生成了属性的结构体。原创 2024-03-17 16:39:04 · 457 阅读 · 0 评论 -
Gameplay Ability System(普攻间隔/冷却)
创建好普攻冷却的蓝图后,可在普攻蓝图的Cooldown中选中刚刚创建的GE_PlayerAttack_Cooldown。关闭GE_PlayerAttack_Cooldown后重新打开可看到下图的面板,我们只需要研究这个面板里的参数即可。1、当Cooldown这个Gameplay Effect生效时,会在Tags里贴上一个Cooldown标签。2、当再次生效时(即在普攻间隔时再次攻击)会检查Tags里有没有已经存在的Cooldown标签。3、如果已经有了Cooldown标签就不再进行普攻,否则执行普攻。原创 2024-03-17 15:15:19 · 635 阅读 · 0 评论 -
Gameplay Ability System(普通攻击能力)
5、注意继承自BP_TestBasePlayerController蓝图类的BP_TestPlayer类中的BeginPlay事件要调用父类的BeginPlay事件。3、在角色蓝图BP_TestBaseCharacter里编写逻辑,选择创建好的GAB_PlayerAttack能力蓝图。1、在UE里新建C++,路径填写新的文件夹名来在C++Classes目录下同时创建新的文件夹。4、在BP_TestPlayerController蓝图类中编写点击鼠标左键调用普攻的逻辑。2、激活能力时打印测试。原创 2024-03-16 19:45:24 · 452 阅读 · 0 评论 -
Gameplay Abilitie System(使角色获得能力)
1、在VS里打开自定义Character脚本,引入头文件,使其继承IAbilitySystemInterface接口。注:FGameplayAbilitySpec其实是个结构体,可以查看其源码发现有很多初始化构造函数,包括能力等级等等。编译完成后创建C++的蓝图类,会发现多出来个Ability System Component组件。2、实现接口的GetAbilitySystemComponent方法,并声明其返回值类型的变量。原创 2024-03-16 16:36:51 · 554 阅读 · 0 评论 -
Gameplay Ability System(安装插件)
4、关闭引擎和VS,在项目目录里删除以下文件夹,最好只保留。1、在UE里安装Gameplay Abilities。2、在VS里打开xxx.Build.cs文件。和.uproject文件。原创 2024-03-16 15:43:55 · 481 阅读 · 0 评论 -
Gameplay Ability System概述
2、可查找(父子关系的层级查找)、可叠加(比如游戏中某种暴击效果:普攻4次必定暴击或者是站在火焰上有叠加烧伤效果)1)基于等级的可消耗资源并带有冷却的角色能力(GameplayAbility)1、为了执行随时间推移而发生的动作所提供的异步操作(比如等待动画播放完成)2)对Actor所拥有的数值型属性的操控(AttributeSet)2、要使用GAS的Actor必须有一个为其服务的ASC来管理相关一切。1)即,不推荐直接做:基本输入操作、界面交互操作、商城购买操作等。可消耗资源,进行冷却,执行逻辑。原创 2024-03-13 15:47:01 · 1205 阅读 · 0 评论