[GameplayAbility] ActionRPG_火术释放
执行流程
技能释放发出一个火球攻击到怪物的一个流程
能力类 GA--GameplayAbility
GameplayAbility激活时会主动生成一个其他的BP_FireBall,这个Actor只是普通用来做功能逻辑的
这里就是执行能力,能力会有动作相关,然后生成BP_FireBall
BP_FireBall是继承的BP_AbilityProjectileBase这个子弹类,因为这个是一个飞行的技能,这个就是用来做逻辑,它在飞行过程中检测击中角色。
当它击中角色之后,就会适用GameAbility GA携带的GameEffect GE(BUFF)作用到击中的目标类,这里和之前有点不一样,因为之前是击中一个目标知道target,直接作用就可以了。但是这里,是一种范围攻击,所以这里封装了一个Effect(BUFF)容器。
GameplayAbility(GA_PlayerSkillFireball)
这是一个技能能力,作用是生成一个火球,同时还涉及到自身的一些能力消耗,能力CD等等。
1.能力相关配置说明
2.能力释放时流程,GA_PlayerSkillFireball继承了一个飞行能力基类GA_SpawnProjectileBase,因为这个能力是一个火球实际是一个飞行的类型,它们统一会生成一个载体
3.载体碰撞到其他的受击目标时,因为前面已经把制定的BUFF传递到了载体,那么当载体碰撞到目标时,就会将BUFF作用到目标
4.我们看一下GA_PlayerSkillFireball能力类中携带的BUFF类(Effect类)GE_PlayerSkillFireball
5.这是一个火术攻击,它是一个法术类造成的是百分比伤害,这个规则相对来说比较复杂一下,没法直接是造成多少伤害,所以这里使用了一个URPGDamageExecution的BUFF伤害计算类,用来做一些BUFF比较复杂的计算。
6.看一下负责计算,这里最后算出的结果会输出,这个类其实是一个实体类,只有BUFF触发时起作用,并把结果返回到BUFF中
在默认下不用这个单独的计算实体类,则是直接设置Modifiers来规则BUFF
7.有一些简单的情况是直接扣除目标的血量,那么就不需要用一些复杂的计算类
8.其实BUFF计算完这些比较数值之后,就会直接只用到目标的AttributeSet,去更改目标的各种参数,血量,等等。
在这里我们看到了BUFF是可以直接去修改AttributeSet中属性的,也可以根据特定计算去选择Captured Attribute属性,他们最后都是作用于AttributeSet的。
9.关于AttributeSet接收到BUFF更改消息时,是有这些接口的
属性修改进行时,判断BUFF目前修改的属性属性类型是什么,这里有默认的修改血量的,也有单独计算实体的伤害类型的属性。
还没有人抢沙发呢~