虚幻四Gameplay Ability System入门(2)-普通攻击

这一篇的目的实现一个简单的攻击Ability。在开始之前,首先设计一下在蓝图中角色的普通攻击是如何实现的:

  1. 鼠标左键启动攻击事件
  2. 攻击事件开始,播放montage。
  3. montage中有notify,作用分别是启动攻击碰撞检测,取消碰撞检测,效果类似于伤害帧
  4. 如果发生碰撞,通过ApplyDamage对敌人造成伤害
  5. montage播放完成,结束攻击事件。

在GAS系统中,我们应该把攻击看做一个完整的Ability,那么它负责的部分应该包括2,4,5,角色本身负责的部分应该是1,4。这样我们就将攻击的逻辑分解完成。

接下来开始实现。

创建攻击Ability

1.JPG

命名为GA_MeleeAttack,然后打开角色蓝图

在BeginPlay中将普通攻击能力给予技能系统,然后给鼠标左键添加事件,启动普通攻击能力。
2.JPG
3.png

实现攻击的碰撞检测

打开角色的mesh,可以看到角色右手手掌的地方有一个名字为weapon_r的socket,我们将会在这个socket的位置添加一个球形碰撞器来检测攻击。如果使用自己的模型,没有这个socket,可以手动添加。
4.JPG
5.JPG

添加完毕后,Sphere只需要检测和Pawn的碰撞,重写begin overlap事件
6.png

如果发生碰撞,则会向角色自己发送一个Gameplay Event,这个事件将会在接下来实现的攻击能力中被响应,注意,这里的event tag应该是Ability.Melee.DealDamage,表明这个事件为响应普通攻击的造成伤害。标签需要自己手动添加。事件的data中,需要将被造成伤害的目标作为数据发送过去。
8.PNG
7.JPG

此外,我们希望的是只有主角的播放攻击动画的时候才会发生碰撞检测,所以需要添加两个Custum Event,同时在开始设置Sphere没有碰撞。

9.PNG

角色部分的代码完成。

普通攻击Montage

创建一个AnimNotify_State。命名为AN_Melee
10.PNG

打开后override两个函数,Receive Notify Begin和Receive Notify End。
11.PNG
12.PNG

然后创建并打开自己的攻击动画Montage

在合适的位置添加Notify_State,AN_Melee
17.png

普通攻击Ability

接下来,为了实现攻击的效果,我们需要一个Gameplay Effect去制造伤害。命名为GE_Melee_DealDamge
13.PNG

打开蓝图后,添加一个Modifier,修改Health,修改方式为-20
18.png

接下来打开GA_MeleeAttack

大致的实现流程是,首先添加Task,PlayMontageAndWait,然后等待一个Gameplay Event,这个事件就是之前在角色部分添加的发生碰撞后发送的事件,接收到event后,就向target apply一个gameplayeffect,这个GE就是我们刚刚实现的GE_Melee_DealDamage.
14.PNG

测试

添加一个BP_Character到游戏里,开始游戏。

在GA_Melee中添加一个测试,打印受到伤害后的角色生命值
19.png
16.PNG

可以看到被攻击的对象血量从0变成了-20。完成,下一篇文章会实现UI和GAS的关联。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值