【UEFN】VerseでプロップにHPをつける方法を解説

このような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 関数を宣言しています。 
コードブロックの意味は以下の通りです。 

プロップのHPを-10して、HPをビルボードに表示 

この関数は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の詳細で以下のように設定します。 

  • 環境ダメージ→オフ 




    以下のように動けば完成です。
よかったらシェアしてね!

この記事を書いた人

メタバースに興味を持ち、UEFN、Verseを学びながらFortniteでゲーム制作しています。
初心者でも理解できるような記事を書くことを心がけております。
間違いがありましたら指摘よろしくお願いいたします。

コメント

コメントする

目次