背景
信号リモコンで小道具を配置する動画をXで見かけてたり、BOX PVPでもこのリモコンを使って特殊な行動をやっていたのもあって調査してみました。
やること
信号リモコンを実行したときにログを出す。
動画
実装
利用するDevice
アイテムグランター
レア度がコモン
のリモコンを取得できるようにします。
信号リモコンマネージャー
信号リモコンのティアをコモンにします。(レア度がコモンのリモコンにしか反応しないようにしています)
全体コード
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に関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。