座標バトルでは、ゲームプレイ中に 3 つの異なる座標空間が使用されます。
ワールド空間:Verse API 機能を通じて、ゲームワールドにオブジェクトを配置するために使用される座標空間。
ボード空間:プレイヤーのゲーム ボードにオブジェクトを配置するために使用する座標空間。
ミニボード空間:プレイヤーに自分のボードのビューを表示するために使用する座標空間。
これらの座標空間を組み合わせることで、プレイヤーは現在のゲームの状態とゲームプレイのパフォーマンスを正確に把握することができます。
包括的な座標空間管理を設計するためには、計画を立てて考える必要があります。 ほとんどの作業は座標空間の変換で、ワールド空間のベクターをゲーム ボードやミニボードの座標に確実にマップでき、再びマッピングを行うことができます。
上の画像 (1) の中央にはゲーム ボードとして表されるボード空間と、上の画像 (2) の左上隅にあるミニボードによって表されるミニボード空間が表示されています。
ワールド空間は、UEFN および Verse API 関数の基盤となる永続座標系です。 UEFN は、Left-Up-Forward (LUF) という 3 次元座標系を使用します。
この座標系の詳細については、「LUF 座標系」を参照してください。
座標空間
このエクスペリエンスでの各座標空間では、ワールド内にゲームオブジェクトを適切に配置するために、位置を異なるサーフェスや異なる型に変換する必要があります。 以下は、これらの各空間の説明です。 これらについては、このチュートリアルの後半で詳しく説明します。
ワールド空間
ワールド空間は、ゲームワールドでオブジェクトを配置するために UEFN と Verse が使用するデフォルト空間です。 このゲーム サンプルでは主に creative_device オブジェクトを使用します。 その結果、仕掛けのゲーム ワールド内の位置を表す Verse クラスは、/UnrealEngine.com/Temporary/SpatialMath モジュールでトランスフォームと定義されます。
transform<public> := struct<concrete><computes>:
Scale<public>:vector3
Rotation<public>:rotation
Translation<public>:vector3
ここでは vector3 が次のように定義されています。
vector3<public> := struct<concrete><computes><persistable>:
X<public>:float
Y<public>:float
Z<public>:float
トランスフォームは、オブジェクトが位置している場所 (平行移動)、オブジェクトが向いている方向 (回転) およびその大きさ (スケール) を定義します。
creative_object クラスから派生するオブジェクトには、Verse API 関数を利用して次のことを実行できます。
GetTransform: オブジェクトの現在のトランスフォーム データを取得します。TeleportTo:オブジェクトをアニメーションなしで指定された目的地に移動させます。MoveTo: 入力目的地への移動をアニメートします
これらの API 機能を使用したトランスフォームの定義によって、ゲーム ワールド内でオブジェクトが存在する場所を定義し、そこにオブジェクトを配置するために必要な全ての要素が提供されます。
ボード空間
ボード空間は、上のImageのコールアウト (1) で識別される座標バトルのメイン ゲーム ボードに使用される空間です。 この空間は、ゲーム ボードの中心を基準にしてボード上の空間またはタイルを指定するために使用されます。
ミニボード空間
ミニボードはプレイヤーに自分のボードのビューを表示します。 ヒットマーカーは、ボード上のタイルがアタックされ、そのタイル上のポーンが敵によって破壊されたことを示します。 ミスマーカーは、ボード上のタイルがアタックされ、敵が何もヒットさせなかったことを示します。 ミニボードはゲームプレイ カメラに関連して配置された静的メッシュであるため、ゲームのユーザー インターフェースの一部として表示されます。
ビルド手順
これらの 3 つの座標空間を併用して効果的なゲームプレイを作成するには、次のことを行う必要があります。
ボード空間でのタイルの表現を定義します。
ボード領域の制限を定義します。
ワールド空間内でボード空間を配置する場所を定義します。
ボード空間とワールド空間の間を変換します。
ボード上の特定の場所にポーンを配置します。
ボードからポーンを取得します。
ボードからポーンを削除します。
ボードに全てのポーンをランダムに配置します。
ミニボード空間のタイルの表現を定義します。
ミニボードの空間の制限を定義します。
ミニボード空間がワールド空間のどこに配置されているかを定義します。
ミニボードにマーカーを配置します。
ミニボード空間、ボード空間、ワールド空間の間で変換します。
ゲームの移動を定義します。
ゲーム ループを構築します。
勝利条件が満たされるタイミングを決定します。