見出し画像

【UEFN/Verse】俺のプログラムを学ぶ日記帳

 この前も、Verseの記事を書いてみましたけど、今回は第二弾です。

  今日は、UEFNのマップ上に自動タレットを配置した場合のVerseのコードを書いてみました。需要があるのかは分かりませんが・・。

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

automated_turret_controller := class(creative_device):

    @editable
    AutomatedTurretDevice:automated_turret_device = automated_turret_device{}

    OnBegin<override>()<suspends>:void =
        # 自動タレットの範囲に入った場合
        AutomatedTurretDevice.ActivatedEvent.Subscribe(Activated)
        # 自動タレットがターゲットを見つけた場合
        AutomatedTurretDevice.TargetFoundEvent.Subscribe(TargetFound)
        # 自動タレットがターゲットを見失った場合
        AutomatedTurretDevice.TargetLostEvent.Subscribe(TargetLost)


    Activated(QAgent : ?agent):void =
        Print("プレイヤーが自動タレットの範囲内に入った!")

    TargetFound(Agent : agent):void =
        Print("自動タレットがプレイヤーを見つけた!")

    TargetLost(Agent : agent):void =
        Print("自動タレットがプレイヤーを見失った!")


 Verseを学び中の俺の解説コメントをつけてみます。間違ってたら、すいません。

@editable
AutomatedTurretDevice:automated_turret_device = automated_turret_device{}

 これは、@editableをつけることで、UEFNのほうで設定できるようにするノリです。
 automated_turret_deviceが自動タレットのことですね。

OnBegin<override>()<suspends>:void =
        # 自動タレットの範囲に入った場合
        AutomatedTurretDevice.ActivatedEvent.Subscribe(Activated)
        # 自動タレットがターゲットを見つけた場合
        AutomatedTurretDevice.TargetFoundEvent.Subscribe(TargetFound)
        # 自動タレットがターゲットを見失った場合
        AutomatedTurretDevice.TargetLostEvent.Subscribe(TargetLost)

 OnBeginは、ゲーム開始のときに実行されるメソッドだという理解をしてます、俺は。コンストラクタ的なノリだと、思ってます。

 あとは、自動タレットのメソッドをサブスクライブしてる感じです。まるかっこの中は、それぞれの関数名ですね。

    Activated(QAgent : ?agent):void =
        Print("プレイヤーが自動タレットの範囲内に入った!")

    TargetFound(Agent : agent):void =
        Print("自動タレットがプレイヤーを見つけた!")

    TargetLost(Agent : agent):void =
        Print("自動タレットがプレイヤーを見失った!")

 基本は、引数はagentなんですねえ。そういうもんなんすねえ。?はついてるのは、UEFNのドキュメントにそう書いてたから、agentと?agentを使い分けてる感じですね。
 たぶん、falseが返ってくる場合があるのは、?がつくって、そういう理解を俺はしてます。
 失敗コンテキストみたいな? そういうノリ?
 ロールバックしちゃうぜ! みたいな。

 
記事の終わりに

 なんか、まさに日記帳って感じなんですけど、UEFNの記事てか、Verseのコードの記事を書きたいから、この記事を書いてしまったんすよね。
 いやー、ぼんやりとした記事になってしまった感がつよいっすね。なるほどー。

 一応、前回の記事。2つありました。

 そういうわけで、お読みいただき、ありがとうございました!


(UEFNの本がアマゾンさんにありました)

(UnrealEngineの本なら多いんですけど、UEFNってまだ本が少ないのかなあ)

(なにはともあれ、知らないのを知ってくのは、楽しいっすよね)

よろしくお願いしますッ!