周期的に現れて消えるプラットフォームは、障害物コースのようなプラットフォーミング ゲームモードの中心となります。プレイヤーはジャンプのタイミングを計って次のプラットフォームへ移動する必要がありますが、失敗すると落下し、最初からやり直さなければなりません。
このチュートリアルに従うことにより、Unreal Editor for Fortnite (UEFN) で Verse を使用して、周期的に現れて消えるプラットフォームを作成する方法を学習します。完全なスクリプト は、参照用としてこのチュートリアルの末尾に記載されています。
使用する Verse 言語機能
loop
:ゲームが終了するまでプラットフォームの表示状態と非表示状態が繰り返されます。この例では、Verseloop
式を使用して、この動作を継続的に実行しています。
使用する Verse API
-
Sleep()
:Sleep()
関数を使用することにより、プラットフォームが非表示状態になる時間と表示状態になる時間を選択できます。 -
Editable Properties:エディタでカスタマイズできるように、2 つの仕掛けのプロパティ (
creative_prop
参照とSleep()
関数呼び出しのToggleDelay
) が UEFN に公開されます。
レベルを設定する
このチュートリアルでは、Verse スターター テンプレート を開始点として使用します。開始するには、Verse の仕掛け 機能の例から新しいプロジェクトを初期化します。
この例では、次の小道具と仕掛けを使用します。
-
1 x プレイヤー スポーン パッド仕掛け:この仕掛けにより、ゲームの開始時にプレイヤーがスポーンする場所を定義します。
-
3 x クリエイティブ小道具:クリエイティブ小道具には、プラットフォームの可視性とコリジョンを切り替える
Hide()
やShow()
など、Verse で呼び出すことができる動作がいくつかあります。このチュートリアルでは、プレイヤーが操作可能なプラットフォームとして Airborne Hoverplatform A を使用しますが、自分の体験のニーズに合わせて自由に変更可能です。
次の手順に従ってレベルを設定します。
-
シーンに Airborne Hoverplatform A を 1 つドラッグします。プレイヤーが消えるプラットフォームから時間内に飛び降りなければ落下するよう、フロアの上にその仕掛けを設置します。アウトライナー で、プラットフォームに「LoopingDisappearingPlatform」という名前を付けます。
-
プラットフォームを 2 回コピーし、最初のプラットフォームの反対側に配置して、プレイヤーがジャンプのタイミングを計らなければならないようにします。プレイヤーが辛うじて反対側に着地できるくらいの配置にする必要があります。
-
プレイヤー スポーン パッド をいずれかのプラットフォームに移動します。これは、ゲーム開始時にプレイヤーがスポーンする場所です。レベルの設定は次のようになります。
Verse の仕掛けを作成する
この例では、Verse で作成した仕掛け を使用して、プラットフォームの可視性を切り替える動作を定義します。次の手順に従って Verse の仕掛けを作成し、レベルに配置します。
-
Verse Explorer を使用して、looping_disappearing_platform という新しい Verse の仕掛けを作成します。手順については、「Verse を使用して独自の仕掛けを作成する」を参照してください。
-
looping_disappearing_platform 仕掛けを コンテンツ ブラウザ からレベルにドラッグします。手順については、「Verse を使用して独自の仕掛けを作成する」を参照してください。
UEFN で仕掛けのプロパティを編集する
このセクションでは、2 つの仕掛けのプロパティをエディタでカスタマイズできるように UEFN に公開する方法を示します。
前のセクションで作成した looping_disappearing_platform 仕掛けからこれらのプロパティをエディタに公開するには、次の手順に従います。
-
Verse Explorer を開き、「looping_disappearing_platform.verse」をダブルクリックして、Visual Studio Code でスクリプトを開きます。
-
looping_disappearing_platform
クラス定義に次のフィールドを追加します。-
「
ToggleDelay
」という名前の編集可能な浮動
小数値。これは、表示状態と非表示状態を切り替える間隔を表します。この 値 を「2.0
」、つまり 2 秒に 初期化 します。# プラットフォームの可視性を切り替える前に待機する時間。 @editable ToggleDelay:float = 2.0
-
「
DisappearingPlatform
」という編集可能なcreative_prop
。これは、周期的に消えて現れるレベル内プラットフォームを表します。コードにはまだレベル内のこのオブジェクトへの参照がないため、空の アーキタイプcreative_prop{}
を使用してこれをインスタンス化します。この参照は後で浮動プラットフォームに割り当てます。# レベル内のプラットフォームへの参照。 @editable DisappearingPlatform:creative_prop = creative_prop{}
-
-
looping_disappearing_platform
クラスのフィールドは次のようになります。using { /Fortnite.com/Devices} using { /Verse.org/Simulation} using { /UnrealEngine.com/Temporary/Diagnostics} # Verse の仕掛けの作成方法については、https://dev.epicgames.com/documentation/ja-jp/uefn/create-your-own-device-in-verse を参照してください。 # レベルに配置できる、Verse で作成したクリエイティブの仕掛け looping_disappearing_platform := class(creative_device): # プラットフォームの可視性を切り替える前に待機する時間。 @editable ToggleDelay:float = 2.0 # レベル内のプラットフォームへの参照。 @editable DisappearingPlatform:creative_prop = creative_prop{}
@editable
属性を使用すると、スクリプトからエディタにToggleDelay
などの値を公開するのに役立ちます。これにより、毎回 Verse コードを再構築することなく UEFN で値をカスタマイズできるため、すばやくイテレートしてゲームプレイ体験に適した値を見つけることができます。 -
スクリプトを Visual Studio Code に保存し、コードをコンパイルして、レベル内の looping_disappearing_platform 仕掛けを更新します。
-
UEFN の [Outliner] パネルで looping_disappearing_platform 仕掛けを選択し、[Details] パネルを開きます。
-
[Details] パネルの [Looping Disappearing Platform] で次のとおり実行します。
-
オブジェクト ピッカー をクリックしてビューポートでクリエイティブ プロップを選択するか、検索バーで「LoopingDisappearingPlatform」を検索して、DisappearingPlatform を LoopingDisappearingPlatform (レベルに追加したクリエイティブ小道具) に設定します。
-
ToggleDelay をプラットフォームを表示する/非表示にする秒数に設定します。この値は、前に定義した値であるため、デフォルトで 2.0 になります。
-
プラットフォームを非表示にする/表示する
レベルと仕掛けを設定したら、プラットフォームを表示する/非表示にするロジックを追加できます。looping_disappearing_platform 仕掛けにこのような動作を追加するには、次の手順に従います。
-
creative_prop
クラスには、可視性を切り替えるHide()
とShow()
という 2 つの メソッド があります。Visual Studio Code に戻り、OnBegin()
でHide()
を呼び出し、次にDisappearingPlatform
でShow()
を呼び出します。# 実行中のゲームで仕掛けが開始されたときに実行します OnBegin<override>()<suspends>:void= # プラットフォームを非表示にします。 DisappearingPlatform.Hide() # プラットフォームを表示します。 DisappearingPlatform.Show()
このコードを実行すると、
Hide()
とShow()
の呼び出しが直後に発生するため、プラットフォームが消えて再表示されることはありません。 -
プラットフォームをより長く表示/非表示状態に維持するには、
Sleep()
を使用して、各Hide()
およびShow()
呼び出しの前に遅延を追加する必要があります。Sleep()
関数によってルーチンの実行が一時停止されるため、この関数にfloat
引数を渡して実行を一時停止する時間 (秒) を指定します。各Hide()
およびShow()
呼び出しの前に、先ほど定義したToggleDelay
を渡してSleep()
を呼び出します。# 実行中のゲームで仕掛けが開始されたときに実行します OnBegin<override>()<suspends>:void= # ToggleDelay 秒待ちます。 Sleep(ToggleDelay) # プラットフォームを非表示にします。 DisappearingPlatform.Hide() # ToggleDelay 秒待ちます。 Sleep(ToggleDelay) # プラットフォームを表示します。 DisappearingPlatform.Show()
このコードを実行した場合、プラットフォームは 2 秒 (
ToggleDelay
で定義した時間) 非表示になった後、ゲームが終わるまで表示されます。Sleep()
関数は、asynchronous コンテキストでのみ呼び出し可能です。OnBegin()
メソッドはsuspends
指定子を持っているため、すでに非同期コンテキストであるため、これ以上何もする必要はありません。suspends
指定子の詳細については、「指定子と属性」を参照してください。 -
ゲームの実行中にプラットフォームの表示状態と非表示状態が繰り返されるようにするには、
loop
式を使用します。loop
を使用すると、コードがbreak
で中断されない限り、loop
式内のコードが繰り返し実行されます。この例では、ゲームの実行中にプラットフォームの可視性を切り替え続けます。したがって、break
式を追加してloop
を終了する必要はありません。OnBegin()
の先頭にloop
式を追加し、残りのコードをループ内になるようにインデントします。OnBegin()
メソッドは次のようになります。# 実行中のゲームで仕掛けが開始されたときに実行します OnBegin<override>()<suspends>:void= loop: # ToggleDelay 秒待ちます。 Sleep(ToggleDelay) # プラットフォームを非表示にします。 DisappearingPlatform.Hide() # ToggleDelay 秒待ちます。 Sleep(ToggleDelay) # プラットフォームを表示します。 DisappearingPlatform.Show()
-
スクリプトを保存し、[Verse] をクリックして [Build Verse Code (Verse コードをビルド)] をクリックし、コードをコンパイルします。
-
UEFN ツールバーの [Launch Session (セッションを起動)] をクリックし、レベルをプレイテストします。
レベルをプレイテストする場合、ゲームが実行されている限り、プラットフォームは 2 秒ごとに表示および非表示になります。
完全なスクリプト
次のコードは、プラットフォームをループで非表示および表示するための完全なスクリプトです。
using { /Fortnite.com/Devices}
using { /Verse.org/Simulation}
using { /UnrealEngine.com/Temporary/Diagnostics}
# Verse の仕掛けの作成方法については、https://dev.epicgames.com/documentation/ja-jp/uefn/create-your-own-device-in-verse を参照してください。
# レベルに配置できる、Verse で作成したクリエイティブの仕掛け
looping_disappearing_platform := class(creative_device):
# プラットフォームの可視性を切り替える前に待機する時間。
@editable
ToggleDelay:float = 2.0
# レベル内のプラットフォームへの参照。
@editable
DisappearingPlatform:creative_prop = creative_prop{}
# 実行中のゲームで仕掛けが開始されたときに実行します
OnBegin<override>()<suspends>:void=
loop:
# ToggleDelay 秒待ちます。
Sleep(ToggleDelay)
# プラットフォームを非表示にします。
DisappearingPlatform.Hide()
# ToggleDelay 秒待ちます。
Sleep(ToggleDelay)
# プラットフォームを表示します。
DisappearingPlatform.Show()
応用編
このチュートリアルでは、Verse を使用して、ゲームの実行中にプラットフォームの可視性を切り替え続ける仕掛けを作成する方法を学習しました。
ここで学習したことを活かして以下を試してみてください。
-
looping_disappearing_platform 仕掛けと小道具の仕掛けの設定を複製し、別の
ToggleDelay
のタイミングで表示/非表示の間隔が長い一連のプラットフォームを作成してみる。 -
同じように、小道具移動装置の仕掛け などの他の仕掛けタイプで周期的に関数を呼び出す。