【UEFN】Verse言語で「条件付きボタンを押すことで能力を取得する仕組み」を実装する

このような条件付きボタンを押すことで能力を取得する仕組み実装します。
条件付きボタンを押してから、相手にダメージを与えると自分のHPが回復するようになっていると思います。

目次

コードの全体

using { /Fortnite.com/Devices } 
using { /Fortnite.com/Characters } 
using { /Fortnite.com/Game } 
using { /Verse.org/Simulation } 
using { /UnrealEngine.com/Temporary/Diagnostics } 


hello_world_device := class(creative_device): 
    @editable VampireCB:conditional_button_device=conditional_button_device{}
    var VampireMap:[agent]logic=map{}
    <#
    他にも能力を作る場合、能力ごとに条件付きボタンとマップを定義
    @editable OtherAbilityCB:conditional_button_device=conditional_button_device{}
    var OtherAbilityMap:[agent]logic=map{}
    #>


    HealAttacker( Result : damage_result) : void = 
        Amount := Result.Amount 
        if (Instigator := Result.Instigator?, Agent := Instigator.GetInstigatorAgent[], FortCharacter := Agent.GetFortCharacter[]): 
            if(Logic:=VampireMap[Agent],Logic?):
               HealAmount := Amount * 0.2 
                FortCharacter.Heal(HealAmount) 


    HandlePlayerJoin ( Player : player ) : void = 
        if (FortCharacter := Player.GetFortCharacter[]): 
            FortCharacter.DamagedEvent().Subscribe(HealAttacker) 


    ActiveVampire(Agent:agent):void=
        if(set VampireMap[Agent]=true):
            <#
            一度に持てる能力を一つにする場合
            if(set OtherAbilityMap[Agent]=false):
            #>


    OnBegin<override>()<suspends>:void= 
        for (Player : GetPlayspace().GetPlayers(), FortCharacter := Player.GetFortCharacter[]): 
            FortCharacter.DamagedEvent().Subscribe(HealAttacker) 
        GetPlayspace().PlayerAddedEvent().Subscribe(HandlePlayerJoin) 
        VampireCB.ActivatedEvent.Subscribe(ActiveVampire)

コードの解説

今回は敵のHPを吸収する仕組みを例にしています。
敵のHPを吸収する仕組みはすでに解説しているので、その部分のコードは解説を省略させていただきます。

冒頭

今回の仕組みでは、条件付きボタンを使うため9行目で定義しています。
プレイヤーごとにボタンを押しているか否かを管理するため10行目でマップを定義します。


複数の能力を作りたい場合、能力ごとに条件付きボタンとマップを定義しましょう。

関数宣言

HealAttacker関数の21行目に、プレイヤーが条件付きボタンを押しているかを判断する式を加えています。
VampireMapのダメージを与えたプレイヤーに対応するlogic型にアクセスし、それがtrueの場合回復するようにしています。

31行目から新たにActiveVampire関数を宣言しています。
コードブロックの意味は以下の通りです。

マップのボタンを押したプレイヤーに対応するlogic型をtrueとする

他にも能力があり、1度に1つの能力しか持てないようにする場合、ほかの能力のマップをfalseにする式も加えましょう。

OnBegin~

43行目に条件付きボタンを押したら、ActiveVampire関数を呼び出す式を加えています。



以下のように動けば完成です。

よかったらシェアしてね!

この記事を書いた人

メタバースに興味を持ち、UEFN、Verseを学びながらFortniteでゲーム制作しています。
初心者でも理解できるような記事を書くことを心がけております。
間違いがありましたら指摘よろしくお願いいたします。

コメント

コメント一覧 (1件)

  • ありがとうございます!!
    記事のコードを見ながら勉強したいと思います!
    本当にありがとうございました!!
    ※先ほど違う記事にコメントしてしまいました。すみません🙏

コメントする

目次