ボードが構築されたので、ボードにポーンを配置し、ポーンが特定のタイル座標に存在するかどうかをチェックし、ボードからポーンを削除します。
次のシナリオから始めます。 tile_coordinate を指定すると、そこにポーンがあるかどうかを判断し、ある場合はそれを取得します。 考え方は次のとおりです。
ボードには
creative_propポーンの配列が保持されます。既存のポーンをイテレートし、それぞれのポーンの位置をタイル座標として取得します。
指定されたタイル座標にポーンがある場合は、それを取得します。
存在しない場合、関数は失敗します。
タイル座標の同一性の判定
そのためには、2 つの tile_coordinate が等しいかどうかをテストできる必要があります。 これが必要なのは、使用するカスタム タイル座標のデータ型が Verse の組み込み比較型のサブタイプではないためです。 そのため、2 つのタイルの座標が等しいことを定義する必要があります。 まず、これを判断するために DataTypes モジュールで AreTileCoordinatesEqual 関数を作成します。
using { /Verse.org/Simulation }
DataTypes<public> := module:
...
UtilityFunctions<public> := module:
...
この関数は、2 つの入力タイル座標の各コンポーネントが整数として等しい場合にのみ成功します。
小道具のタイル座標を取得
ポーンを操作するには、ポーンの位置をタイル座標として取得する必要があります。 さらに、タイル座標としてクリエイティブ プロップの位置を取得するため、ヘルパー関数も作成します。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
入力クリエイティブ小道具のワールド位置をゲーム ボード上のタイル座標に変換できる場合にのみ、この機能が成功します。 また、以前に定義した ToTileCoordinate 関数を使用して、ワールド位置からボード空間の位置に変換します。
タイル座標からポーンを取得
次のように GetPawn 関数を記述します。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
この関数は、次のステップを実行します。
ボード上の既存の全てのポーンをイテレートします
ポーンの位置をタイル座標として取得します。
ポーンの位置が入力位置と同じ場合、見つかったポーンとして格納されます。
これにより、その場所でポーンが 1 つだけ見つかったことを確認できます。
1 つのポーンを return します
この機能が成功するのは、入力タイル座標にポーンが 1 つだけ存在し、そのポーンがポーン配列から正常に取得された場合のみです。
タイル座標のポーンの設定
ボードに単一のポーンを配置する関数を記述します。 シンプルにするために、creative_prop オブジェクトをポーンとして使用し、ポーンのメッシュには SM_Box_asset を使用します。 これらは 後からお好みのカスタムオブジェクトに変更できます 仕組みはこのとおりです。
ボードには
creative_propポーンの配列が保持されます。tile_coordinateを指定し、そこにポーンがすでに存在するかどうかをチェックします。ポーンが存在しない場合は、そこに 1 つ配置されます。
次のように SetPawn 関数を記述します。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
この関数は、次のステップを実行します。
入力タイルの座標がボード上にあることを確認します。
入力タイル座標にある全てのポーンを検索します。
ポーンが見つからないことを確認します。
入力位置で小道具のスポーンを試みます。
この関数は、以下の場合にのみ成功します。
入力タイル座標に現在ポーンがありません。
入力タイルの座標はボード上にあり、ワールド位置に変換できます。
ポーンの除去
最後に必要な関数は、ボードからポーンを削除する機能です。 この関数は除去するクリエイティブ小道具を受け取り、ボードとブックキーピングポーン配列からその小道具を除去します。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
概要
要約すると、このページでは、次の手順を実行しました。
ボードにポーンを配置します。
ボードからポーンを取得します。
ボードからポーンを削除します。
ファイル
using { /Verse.org/Simulation }
DataTypes<public> := module:
tile_coordinate<public> := class<concrete>:
@editable
Left<public>:int = 0
@editable
Forward<public>:int = 0
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):