このようなVerseでプロップにHPをつける仕組みを作っていきます。
コードの全体
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Fortnite.com/Characters }
TowerHP_device := class(creative_device):
@editable PM:prop_manipulator_device = prop_manipulator_device{}
@editable Bill : billboard_device = billboard_device{}
@editable var HP:int = 3000
OnDamagedProp(Agent : agent) : void =
set HP -=10
Bill.SetText(StringToMessage("{HP}"))
StringToMessage<localizes> (value:string) <computes> :message = "{value}"
OnBegin<override>()<suspends>:void=
PM.DamagedEvent.Subscribe(OnDamagedProp)
コードの解説
冒頭
今回の仕組みでは小道具操作機とビルボードを使うため、10,11行目でそれぞれ定義します。
12行目でプロップのHPを定義します。
関数宣言
15行目から OnDamagedProp 関数を宣言しています。
コードブロックの意味は以下の通りです。
この関数は24行目のDamagedEventをきっかけに呼び出されるため、パラメータはagent型となります。パラメータの定数は使いませんが、書かないとエラーが出てしまうので書いています。
16行目でHP変数の値を-10していますが、この数値が1回の攻撃でプレイヤーが与えられるダメージになります。
17行目でStringToMessage関数によりstring型である”{HP}”をmessage型へ変換します。
それをSetText関数によりビルボードに表示させます。
20行目からStringToMessage関数を宣言しています。
これはこの関数を呼び出した際の引数をstring型からmessage型に変換するものです。
ビルボードのSetText関数はstring型ではなくmessage型を必要とするため変換が必要となります。
OnBegin~
コードブロックの意味は
小道具操作機でDamagedEventが発生したらOnDamageProp関数を呼び出す
となります。
仕掛けの設置
今回の仕組みで使う仕掛けは小道具操作機とビルボードです。
まず、HPをつけたいプロップをビューポート上に設置します。
次に、小道具操作機をプロップに重ねて配置します
プロップの近くにビルボードを設置します。
詳細で以下のように設定します。
- テキスト→3000
- テキストの行末揃え→Center
- テキストサイズ→24
- テキストカラー→黒
- ディスプレイモード→両面
Verseで書いたTowerHPデバイスの詳細で
以下のように設定します。
IslandSetting0の詳細で以下のように設定します。
- 環境ダメージ→オフ
以下のように動けば完成です。
コメント