背景
PVP系の島を作ろうとしたときに現在生存しているキャラクターが指定の人数になったことを起点に何かのイベントを発生させたいというときにプレイヤーカウンターについて知りました。
やること
指定の人数になったときに何か処理を行わせることです。
動画
実装
デバイス設定
- 目標プレイヤー数と同値になったときにイベントを起こすように設定
- ゾーンを作成してゾーン内にいるプレイヤー数を取得するように設定
全体コード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
sample_counter_device := class(creative_device):
@editable
PlayerCounter:player_counter_device=player_counter_device{}
OnBegin<override>()<suspends>:void=
# 指定の人数がゾーンに入ったときに発火する
PlayerCounter.CountSucceedsEvent.Subscribe(CountSucsses)
# ゾーンにプレイヤーが入ったときに発火する(そのプレイヤーのagentも取得できる)
PlayerCounter.CountedEvent.Subscribe(PlayerEntered)
# ゾーンからプレイヤーが出たときに発火する(そのプレイヤーのagentも取得できる)
PlayerCounter.RemovedEvent.Subscribe(PlayerExited)
CountSucsses():void=
Print("現在ゾーンにいる人数: {PlayerCounter.GetCount()}")
PlayerEntered(Agnet:agent):void=
Print("プレイヤーがゾーンに入りました")
PlayerExited(Agnet:agent):void=
Print("プレイヤーがゾーンから出ました")
今回は目標数と同値になったときのイベントやゾーンに入ってカウントされたとき、ゾーンから出てカウントが外れた時のイベントをサブスクライブしてみました。
カウント時のイベントでagent
が取得できるので何番目に入ったプレイヤーに何かをするということが簡単にできそうですね。
まとめ
プレイヤーカウンターデバイスはPVP系で使えそうなので覚えて損は無さそうです!!
このままデバイスをVerseであつかってみるを全制覇していきたいと思います!!
余談
この度UEFN/Verseに関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。