可是对于初学者来说,如何执行技能启动到武器命中目标扣血的整个过程,穿插在c++和蓝图中,可能难以贯穿起来,这里做个简要的笔记记录。
1. 蓝图类 GA_MeleeBase 近战攻击的基础实现
Event ActivateAbility : 能力激活
CommitAbility : 执行能力的cost和cooldown 前置判定,通过则继续
PlayMontageandWaitforEvent :call c++ 类 URPGAbilityTask_PlayMontageAndWaitForEvent,执行攻击的montage动画播放,并 waite 动画的notify通知触发 gameplay effects
当收到动画碰撞判定发出的 WeaponHit tag的GamePlay Event时,执行 GE_MeleeBase effect。
2. GE_MeleeBase 伤害数值效果处理
指定 RPGDamageExecution 执行伤害数值处理,AttributeSet数值发生变化时,触发URPGAttributeSet::PostGameplayEffectExecute 处理,伤害值和血量值的变化在这里产生,并触发相关event执行对应血量更新以及播放受击等效果
3. WeaponAttackNS 开启或关闭武器上的碰撞,gameplay event的发送由武器来负责
WeaponAttackNS在对应的montage动画中激活和关闭
event tag 是在此进行指定为 WeaponHit tag (上文中提到的GA_MeleeBase默认配置Gameplay Effect),通知 WeaponActor 开启碰撞时传递
4.WeaponActor
首先接收WeaponAttackNS开启关闭碰撞,并初始化AttackEventTag,然后在Event ActorBeginOverlap中 Send Gameplay Event to Actor。
接收到 Gameplay Event后
触发EventReceived
执行上文 2. GE_MeleeBase 完成攻击动作到伤害输出的流程