背景
BOX PVPで移動速度の速い役職を作るために調べました。
やること
トリガーを押したら移動速度が常に上がるようにすること。
動画
実装
利用するDevice
- スピードを3倍
- 効果無限
全体コード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
player_speed_device := class(creative_device):
@editable
Speed:movement_modulator_device=movement_modulator_device{}
@editable
Trigger:trigger_device=trigger_device{}
OnBegin<override>()<suspends>:void=
Trigger.TriggeredEvent.Subscribe(SpeedUp)
SpeedUp(QAgent : ?agent):void=
if (Agent := QAgent?):
Print("Speeding up")
Speed.Activate(Agent)
とても単純でスピードを速くしたいプレイヤーのAgent
を取得してActivateするだけでした。
movement_modulator_device
の中身を見てみます。
# Used to temporarily modify the speed of `agent`s and vehicles.
movement_modulator_device<public> := class<concrete><final>(creative_device_base):
# Signaled when this device is activated by an `agent`.
# Sends the `agent` that activated this device.
ActivationEvent<public>:listenable(agent) = external {}
# Enables this device.
Enable<public>():void = external {}
# Disables this device.
Disable<public>():void = external {}
# Activates this device's movement effect on `Agent`.
Activate<public>(Agent:agent):void = external {}
凄く単純でデバイスの有、無効化やActivateしたときのイベント購読だけでした。スピードの調整は行えないようです。
まとめ
こちらもすごく単純にいけそうでした。
欲を言うとこのようなデバイスを介さずにfort_character
から直接操作出来たらいいのになと思いました。
余談
この度UEFN/Verseに関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。