美文网首页
十九、火球术(GA_PlayerSkillFireball)

十九、火球术(GA_PlayerSkillFireball)

作者: 珏_Gray | 来源:发表于2019-06-27 11:45 被阅读0次

如果理解了近战攻击技能,那么火球术也很容易理解。
主要区别在于,GameAbility中的task接收到montage发送的event之后,不再是直接调用ApplyEffectContainer,而是调用MakeEffectContainerSpec。二者的区别在于,前者生成EffectSpec后,马上应用效果,而后者则只生成EffectSpec(会capture此时的角色属性)。
GA_SpawnProjectileBase

调用MakeEffectContainerSpec之后,生成一个火球飞向目标。

GA_SpawnProjectileBase

当火球碰撞到目标后:

BP_AbilityProjectileBase
这两个函数都在了RPGBlueprintLibrary.h/cpp中,这在code部分没有提到,这里稍微补充一下。

FRPGGameplayEffectContainerSpec URPGBlueprintLibrary::AddTargetsToEffectContainerSpec(const FRPGGameplayEffectContainerSpec& ContainerSpec, const TArray<FHitResult>& HitResults, const TArray<AActor*>& TargetActors)
{
    FRPGGameplayEffectContainerSpec NewSpec = ContainerSpec;
    NewSpec.AddTargets(HitResults, TargetActors);
    return NewSpec;
}

TArray<FActiveGameplayEffectHandle> URPGBlueprintLibrary::ApplyExternalEffectContainerSpec(const FRPGGameplayEffectContainerSpec& ContainerSpec)
{
    TArray<FActiveGameplayEffectHandle> AllEffects;

    // Iterate list of gameplay effects
    for (const FGameplayEffectSpecHandle& SpecHandle : ContainerSpec.TargetGameplayEffectSpecs)
    {
        if (SpecHandle.IsValid())
        {
            // If effect is valid, iterate list of targets and apply to all
            for (TSharedPtr<FGameplayAbilityTargetData> Data : ContainerSpec.TargetData.Data)
            {
                AllEffects.Append(Data->ApplyGameplayEffectSpec(*SpecHandle.Data.Get()));
            }
        }
    }
    return AllEffects;
}

注意函数ApplyGameplayEffectSpec,gameplay effect是在此时才真正生效,改变角色的属性值。
和之前的ApplyEffectContainer一样,应用effect之后会返回 FActiveGameplayEffectHandle类,给予玩家对该激活effect的引用。

相关文章

  • 十九、火球术(GA_PlayerSkillFireball)

    调用MakeEffectContainerSpec之后,生成一个火球飞向目标。 当火球碰撞到目标后: 注意函数Ap...

  • 火球术

    「Ignite from void! 」 他的手上多出了一簇火苗。 张帆看完了今天的新番,准备骑车从图书馆回宿舍。...

  • 火球术

    火球术是最广为人知的魔法之一。但它的发明者却不是人类,而是龙。 在人类还是古猿的时候,龙就已经建立起了自己的文明。...

  • 2019-01-08

    复古传奇手游的玩家等级达到十九级之后,就可以学习大火球之术,这种技术能够对一条直线的敌人同时造成属性为火的攻击。随...

  • 光阴似箭数载过:传奇有喜也有忧

    复古传奇手游的玩家等级达到十九级之后,就可以学习大火球之术,这种技术能够对一条直线的敌人同时造成属性为火的攻击。随...

  • 《凡人修仙传》伴读笔记(作者忘语)047

    封岳的小刀符宝也化作符纸散落在地。 收起三个宝贝后,韩立才注意到那双鞋。 他以火球术想要毁尸灭迹,却发现火球术居然...

  • 「补档」短篇火影忍者tk文 佐良娜

    (之前那篇又被封了。。。重新补一下。。抱歉。。) “火遁·豪火球之术!” 巨大的火球从年仅十一岁的宇智波佐良...

  • | 2. 勇者的尊严【连载】会魔法的兔小白

    看到霸天虎拿起了盾牌,里格的火球术也刚好成形,对准霸天虎,又是一发大火球,飞向了霸天虎。但相对有准备的霸天虎来说,...

  • 王者梦魇(二十二)-挂币也拯救不了世界

    “一技能。”韩樱子的声音响起。舒凌峰下意识一个“火球术”出手。三个火球划出美妙的弧线,收割三个士兵的生命...

  • 短篇火影忍者tk文 佐良娜(上)

    “火遁·豪火球之术!” 巨大的火球从年仅十一岁的宇智波佐良娜的口中喷涌而出,犹如一条火龙将前方的木桩燃烧殆...

网友评论

      本文标题:十九、火球术(GA_PlayerSkillFireball)

      本文链接:https://www.haomeiwen.com/subject/mfmlcctx.html