【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ってまだ本が少ないのかなあ)
(なにはともあれ、知らないのを知ってくのは、楽しいっすよね)
よろしくお願いしますッ!