0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UEFN / VerseAdvent Calendar 2023

Day 21

【UEFN】Verseで信号リモコンのシグナルを購読してみる

Last updated at Posted at 2023-12-20

背景

信号リモコンで小道具を配置する動画をXで見かけてたり、BOX PVPでもこのリモコンを使って特殊な行動をやっていたのもあって調査してみました。

やること

信号リモコンを実行したときにログを出す。

動画

実装

利用するDevice

アイテムグランター
image.png
レア度がコモンのリモコンを取得できるようにします。
image.png

image.png

信号リモコンマネージャー
image.png
信号リモコンのティアをコモンにします。(レア度がコモンのリモコンにしか反応しないようにしています)
image.png

全体コード

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

signal_controller_device := class(creative_device):

    @editable
    Signal:signal_remote_manager_device=signal_remote_manager_device{}

    @editable
    Item:item_granter_device=item_granter_device{}

    OnBegin<override>()<suspends>:void=
        Signal.PrimarySignalEvent.Subscribe(OnSignal)
        Players := GetPlayspace().GetPlayers()
            for (Player : Players):
                Item.GrantItem(Player)

    OnSignal(Agent : agent):void=
        Print("Signal Received")

item_granter_deviceで信号リモコンをプレイヤーに持たせます。

PrimarySignalEventでリモコンのイベントを購読しOnSignalを実行します。

signal_remote_manager_deviceを見てみる

 # Used to trigger a custom response to a *Primary* or *Secondary* signal, sent by a *Signal Remote* item.
    signal_remote_manager_device<public> := class<concrete><final>(creative_device_base):
        # Signaled when a player has triggered the *Primary* signal using a *Signal Remote* item.
        # Sends the `agent` that triggered the signal.
        PrimarySignalEvent<public>:listenable(agent) = external {}

        # Signaled when a player has triggered the *Secondary* signal using a *Signal Remote* item.
        # Sends the `agent` that triggered the signal.
        SecondarySignalEvent<public>:listenable(agent) = external {}

        # Enables this device.
        Enable<public>():void = external {}

        # Disables this device.
        Disable<public>():void = external {}

PrimarySignalEventでは左クリックしたイベント購読で、SecondarySignalEventが右クリックイベントの購読になります。あとはデバイスの有、無効化関数になります。

まとめ

こちらの信号リモコンは比較的プレイヤーの好きなタイミングにイベント購読させることができるのでカスタムな武器を作れそうだと感じました。

余談

この度UEFN/Verseに関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?