[GameplayAbility] ActionRPG_火术释放

    执行流程

    技能释放发出一个火球攻击到怪物的一个流程

    1

    能力类 GA--GameplayAbility

    GameplayAbility激活时会主动生成一个其他的BP_FireBall,这个Actor只是普通用来做功能逻辑的

    2

    这里就是执行能力,能力会有动作相关,然后生成BP_FireBall
    3

    BP_FireBall是继承的BP_AbilityProjectileBase这个子弹类,因为这个是一个飞行的技能,这个就是用来做逻辑,它在飞行过程中检测击中角色。
    4

    当它击中角色之后,就会适用GameAbility GA携带的GameEffect GE(BUFF)作用到击中的目标类,这里和之前有点不一样,因为之前是击中一个目标知道target,直接作用就可以了。但是这里,是一种范围攻击,所以这里封装了一个Effect(BUFF)容器。
    5

    GameplayAbility(GA_PlayerSkillFireball)

    这是一个技能能力,作用是生成一个火球,同时还涉及到自身的一些能力消耗,能力CD等等。
    1.能力相关配置说明
    6

    2.能力释放时流程,GA_PlayerSkillFireball继承了一个飞行能力基类GA_SpawnProjectileBase,因为这个能力是一个火球实际是一个飞行的类型,它们统一会生成一个载体
    7

    就是一个火球
    8

    3.载体碰撞到其他的受击目标时,因为前面已经把制定的BUFF传递到了载体,那么当载体碰撞到目标时,就会将BUFF作用到目标
    9

    4.我们看一下GA_PlayerSkillFireball能力类中携带的BUFF类(Effect类)GE_PlayerSkillFireball
    10

    5.这是一个火术攻击,它是一个法术类造成的是百分比伤害,这个规则相对来说比较复杂一下,没法直接是造成多少伤害,所以这里使用了一个URPGDamageExecution的BUFF伤害计算类,用来做一些BUFF比较复杂的计算。
    11

    6.看一下负责计算,这里最后算出的结果会输出,这个类其实是一个实体类,只有BUFF触发时起作用,并把结果返回到BUFF中
    12

    在默认下不用这个单独的计算实体类,则是直接设置Modifiers来规则BUFF
    13

    7.有一些简单的情况是直接扣除目标的血量,那么就不需要用一些复杂的计算类
    14

    8.其实BUFF计算完这些比较数值之后,就会直接只用到目标的AttributeSet,去更改目标的各种参数,血量,等等。

    在这里我们看到了BUFF是可以直接去修改AttributeSet中属性的,也可以根据特定计算去选择Captured Attribute属性,他们最后都是作用于AttributeSet的。

    9.关于AttributeSet接收到BUFF更改消息时,是有这些接口的
    15

    属性修改前,判断一些需要额外处理的规则
    16

    属性修改进行时,判断BUFF目前修改的属性属性类型是什么,这里有默认的修改血量的,也有单独计算实体的伤害类型的属性。
    17

    计算之后会回调给角色
    18

    Attribute属性是直接挂在角色身上的,这个就代表了角色的属性信息,BUFF就是通过修改这个属性来达到对角色的影响
    19

    有帮助就分享一下吧!

    转载请注明:少狼 – 敬畏知识的顽皮狗 » [GameplayAbility] ActionRPG_火术释放

    喜欢 2

*

还没有人抢沙发呢~