ターゲットの間を前後に動くエンティティを作成したので、このタイミングで独自のレベルをすみやかにセットアップするために使用できるプレハブを作成します。
プレハブを作成する
まず、動くエンティティを構成するエンティティのセットを定義する必要があります。 それぞれのセットには複数のエンティティがあります。 第 1 エンティティはプラットフォーム自体を表し、他のエンティティはプラットフォームの移動先を表します。 以下の手順に従って、リセットするプラットフォーム プレハブを作成します。
シーンに「
AnimatingBlockSet」という名前のエンティティを追加します。 シーンにエンティティとコンポーネントを追加する方法については、「エンティティとコンポーネントを操作する」を参照してください。AnimatingBlockという別のエンティティをAnimatingBlockSetの子としてシーンに追加します。 このエンティティのトランスフォームを親のトランスフォームに設定します。 これはアニメートするエンティティです。mesh_componentを AnimatingBlock に追加し、キューブに割り当てます。animate_to_targets_componentとkeyframed_movement_componentをAnimatingBlockに追加します。 これは、先ほど定義した Verse コンポーネントです。3 つの新エンティティ
StartingTarget、Target2、Target3をシーンに追加し、それらをAnimatingBlockSetの子に設定します。mesh_componentをそれぞれに追加し、球に設定します。 これによりエンティティがワールドで動いている場所を可視化できます。このエンティティを再配置することで、プラットフォームを別のエリアに移動させることができます。また、ブロックを配置したら、
mesh_componentを無効にすることでゲームプレイ中に球形が表示されないようにすることができます。StartingTargetをAnimatingBlockと同じトランスフォームに配置し、Target2とTarget3をブロックの移動させる場所に配置します。Target2とTarget3に異なるスケールと回転を与えて、それぞれに対してアニメートされるとブロックがどのように変化するのかを確認します。AnimatingBlockエンティティをエディタで選択します。 [Details (詳細)] パネルで、3 つのアイテムをSegments配列に追加します。 ブロックを移動させる順番で、SegmentStartPositionを各ターゲット エンティティに設定します。PauseSeconds、AnimationDuration、およびEasingFunctionを変更して、ブロックの動きをカスタマイズすることもできます。最後に、[Outliner (アウトライナー)] で、
AnimatingEntitySetを右クリックし、[Save As Prefab (プレハブとして保存)] を選択します。 このプレハブに「animating_entity_prefab」と名前を付けます。
先ほどのセットアップを使用したプレハブの例。 Target2 と Target3 のスケールと回転は異なるため、AnimatingBlock はそれらへ移動する際に適切にスケールと回転を行います。
プラットフォームとなるレベルを構築する
完成です。 基盤は完了したので、作成を開始しましょう。 作成したプレハブを使用して、すみやかにプラットフォーム レベルを構築します。
初めに、レベル本体になるブリッジ構造を作成するために animating_entity_set_prefab の使用を試します。 各エンティティで mesh_component を独自のカスタム メッシュでオーバーライドし、スタイルを追加できます。 oneshot アニメーション モードを使用して、ブロックが移動を終了したときにその位置に留まるようにします。
プレイヤーが渡る橋を構築するために、ブロックをゆっくりと所定の位置までアニメートします。
次に、作成した animating_entity_set_prefab をいくつか配置し、プレイヤーが慎重に進む必要がある、一連のプラットフォームを作成します。 各セグメントの AnimationDuration、PauseSeconds、および EasingFunction をさまざまに変更し、各プラットフォームをユニークにして、プレイヤーが用心して進むようにします。 次のセットアップでは、プレイヤーは 3 つのプラットフォームを渡る必要があります。それぞれアニメーションの時間と一時停止回数が異なります。
ジャンプは溶岩を飛び越えるときに厳しいものになります。
すべてのエンティティは正確に同じ時間でシミュレーションを開始するため、プラットフォームは同時にすべての移動も開始します。 複数のプラットフォームを同じ方向に移動する場合は特に、プラットフォームを配置するときにこのことを留意する必要があります。AnimationDuration と PauseSeconds を変更しないかぎり、一部のジャンプが不可能になることがあるためです。
ループで消えるプラットフォームはどうですか。 disappearing_entity_prefab を使用して、異なるタイミングで消えたり現れたりするプラットフォームをプレイヤーが飛び越えるセクションを作成します。 これらで Duration を変更して、プレイヤーに対してトリッキーな状況を生み出します。
プレイヤーはこのセクションを渡るために、各エンティティのタイミングに注意を払う必要があります。
最後に animating_entity_prefab をプレイヤーが回避しなければならない障害物として使用することを試します。 次のセットアップでは、プレイヤーは、巨大ブロックに追いかけられながら、池に架かる一連のプラットフォームを渡る必要があります。 ブロックには異なるアニメーション時間と一時停止回数があり、池を急いで渡る必要がありますが、不可能ではありません。
巨大キューブに追いかけられているため、池でリラックスするのは簡単ではありません。
応用編
完成です。 このガイドを完了したことで、カスタムの Verse コンポーネントを使用して、独自のプラットフォーム ゲームを作成する方法を習得できました。 このガイドで学習した知識を活用して、次の操作を実行してみましょう。
同じプラットフォームで、複数の Verse コンポーネントを使用して、興味深いシナリオを作成します。 移動するとともに消えるプラットフォームはどうでしょう。
プラットフォーマーに使用できるその他の種類のコンポーネントについて考えてみましょう。 プレイヤーが踏めるときに光るライト コンポーネントや、プラットフォームがプレイヤーにダメージを与えられるかどうかを知らせるパーティクル システム コンポーネントを使用するプラットフォームなどがあります。
新しいタイプの障害物を作成するために、他のカスタム Verse コンポーネントを作成してみましょう。 適切な色のときにだけ通過できるエンティティはどうでしょう。 プレイヤーの位置を検出し、ゆっくり追跡する自動誘導エンティティはどうでしょう。
完全なコード
このチュートリアルで作成した完全なコードを以下に示します。
disappear_on_loop_component.verse
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
# Loops between hiding and showing the entity by enabling and disabling
# its static mesh and collision components.
disappear_on_loop_component := class<final_super>(component):
animate_to_targets_component.verse
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
using { /Verse.org/SpatialMath }
using { /Verse.org/SceneGraph }
using { /Verse.org/SceneGraph/KeyframedMovement }
using { /UnrealEngine.com }
# Editor Tool Tips