前のステップでは、コマンドを受信すると前進したり、左に回転したり、右に回転したりできる NPC を作成しました。 このステップでは、キャラクターが動き回ることができるゲームボードを設定します。
このゲームでは、ゲームボードは次を認識および管理する必要があります。
タイル サイズ:キャラクターがどのくらい遠くに動けるか認識するためのボード上のタイルの大きさ。
カメラ:キャラクターがこのゲームボードに到達した場合に使用するカメラ。 このため、固定ポイント カメラの仕掛けを使用します。
開始位置:キャラクターがボード上で開始する位置。 このために、編集可能なプロパティとして設定してそのトランスフォームを取得できるように、クリエイティブ小道具を使用します。
最終目標:キャラクターが目指す最終目標。これがゲームボードの終了のシグナルを送ります。 このために、トリガーの仕掛けを使用して、キャラクターがこれを踏んだときにシグナルを送ります。
障害物:障害物はキャラクターがすぐに最終目標に到達しないようにします。 詳細については、「障害物を作成する」を参照してください。
これらはそれぞれ、ゲームボードのクラスでトラッキングされます。 クラスには concrete 指定子があるので、Verse の仕掛けで編集可能なプロパティにすることができます。各クラス メンバーは UEFN から値を変更できる編集可能な属性があります。
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
ゲームボードがプロパティで定義されたので、動作を追加しましょう。
最終目標の処理:ゲームボードが設定されると、最終目標の
TriggeredEventをサブスクライブします。 イベント ハンドラとカスタム イベントを使用して、トリガーの仕掛けがキャラクターによってトリガーされたときに最終目標に到達したというシグナルをパブリックに送ります。 詳細については、「仕掛けのインタラクションをコード化する」を参照してください。ゲームボードの開始:ゲームボードの開始時にカメラの仕掛けをすべてのプレイヤーに割り当てます。
ゲームボードの終了:ゲームボードの終了時にカメラの仕掛けをすべてのプレイヤーから削除します。
以下は、gameboard の完全なクラスです。
# This class represents the gameboard and how it behaves.
# This class has the concrete specifier so it can be an editable property on a Verse device.
gameboard<public> := class<concrete>:
# The size of each tile on the gameboard. By default set to
# the default Fortnite tile size of 512x512x384.
@editable
TileSize<public>:vector3 = vector3{X:=512.0, Y:=512.0, Z:=384.0}
# The fixed point camera that provides a top-down view of the gameboard
障害物を作成する
障害物はキャラクターがすぐに最終目標に到達しないようにします。 このゲームでバリアの仕掛けを障害物として使用してキャラクターが移動するのをブロックしたり、バリアを非アクティブ化するトリガーの仕掛けを使用したりします。
obstacle クラスの定義は、以下のとおりです。
IsObstaclePassed:現在、バリアがアクティブ化されているか、非アクティブ化されているかを格納するためのデータ。 状態は 2 つしかないため、Logic 型です。
Barriers:障害物に関連付けられたバリアの仕掛け。 これは、複数のバリアの仕掛けを設定し、それらを非アクティブ化するトリガーにアタッチできるということです。
BarrierDissolves:障害物を渡したときに再生するムービー シーケンス。
BarrierAppears:障害物をリセットしたときに再生するムービー シーケンス。
Trigger:障害物を非アクティブ化するためにキャラクターが到達するトリガーの仕掛け。
以下は障害物を示す完全なクラスです。クラスには concrete 指定子があるので、Verse の仕掛けで編集可能なプロパティにすることができます。
# An obstacle on the gameboard, with an associated set of
# Barrier devices, Trigger devices that deactivate the barriers,
# and Cinematic Sequence devices that play sequences for barriers dissolving and appearing for visual feedback on what is happening.
# This class has the concrete specifier so it can be an editable property on a Verse device.
obstacle := class<concrete>:
# Data for storing whether barriers are currently enabled/disabled.
var IsObstaclePassed:logic = false
# The array of barriers for this obstacle.
ゲームボードを追加する
ゲームボードを定義したので、これらのゲームボードの配列を Verse の仕掛けに追加します。これについては、この後の「6. ゲーム ループを管理する」のステップを参照してください。
「VKT - Verse Device Starter Games」テンプレートから作成したプロジェクトで、Verse コマンダー ミニゲームの仕掛けのアウトライナー内で検索し、選択してその [Details (詳細)] パネルを開きます。
ゲームボードの下にある [Details] パネルに、ゲーム内のボードに対応する 5 つの要素が表示されます。 これらの要素を展開して、ゲームボードに使用される仕掛け、シネマティックス、他のプロパティを確認します。
ゲームボードに [Add Element (要素を追加)] を選択してゲームボードを追加し、ゲームにレベルを追加できます。
削除したいゲームボードの横にあるドロップダウンを選択してゲームボードを削除し、ゲームからレベルを削除できます。
要素を押したままでゲームボードの要素の前または後にドラッグすることで、ゲームボードを並べ替えてゲーム内のレベルの順序を変更することもできます。
特定のレベルをテストするには、テストしたいレベルがリストの最初になるようにボードを並べ替えます。
次のステップ
ゲームボードを定義し、必要な数だけ追加する方法を説明しました。 次のステップでは、ボードを設計して面白いパズルを開発したり制限に対応したりする方法について学習します。