周期的に現れて消えるプラットフォームは、障害物コースのようなプラットフォーミング ゲーム モードの中心となります。 このようなプラットフォームでは、プレイヤーはリズムを取って次のプラットフォームに飛び乗る必要があります。 ミスするとプレイヤーは落下し、最初からやり直さなければならなくなります。
この例は、Scene Graph と Verse で作成したコンポーネントを使用して消えるプラットフォームを作成する方法を説明します。 「繰り返し消えるプラットフォーム」と同じコンセプトの Verse で作成した仕掛けの実装と比較してみてください。
プラットフォームを消す
以下の手順に従って、Scene Graph を使用して消えるプラットフォームを作成します。
シーンに「DisappearingPlatform」という名前のエンティティを追加します。 シーンにエンティティとコンポーネントを追加する方法については、「エンティティとコンポーネントを操作する」を参照してください。
消えるプラットフォーム エンティティに mesh_component を追加し、そのメッシュを cube に設定します。
「
disappear_on_loop_component」という名前の新規 Verse コンポーネントを作成し、コンポーネントを消えるプラットフォーム エンティティに追加して、エンティティを保存します。 独自のコンポーネントを作成する方法については、「独自の Verse コンポーネントを作成する」を参照してください。VS Code で
disappear_on_loop_componentを開き、次の手順に従って編集します。編集可能な
floatプロパティを「Duration」という名前のコンポーネントに追加します。 これは、プラットフォームが非表示になるまでの表示時間と、再表示されるまでの非表示時間を決定します。Verseusing { /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(component):プラットフォームを非表示にするには、スタティックメッシュを非表示にし、コリジョンを無効にすることでプレイヤーがプラットフォーム上に着地できないようにします。
Hide()というエンティティから拡張する新規関数を、作成したdisappear_on_loop_componentクラスに追加します。この関数内部で、探している型 (この場合はmesh_component) でGetComponents[]を呼び出します。エンティティのスタティックメッシュを返します。 次にDisable()をスタティックメッシュで呼び出します。Verse# If the entity has a mesh or collision component, disable them. (Entity:entity).Hide():void= if: StaticMesh := Entity.GetComponent[mesh_component] then: StaticMesh.Disable()別の
entity拡張関数、Show()をdisappear_on_loop_componentクラスに追加します。 この実装は、Hide()と同様ですが、スタティックメッシュ コンポーネントで代わりにEnable()を呼び出します。Verse# If the entity has a mesh or collision component, enable them. (Entity:entity).Show():void= if: StaticMesh := Entity.GetComponent[mesh_component] then: StaticMesh.Enable()最後に、
OnSimulate()で、loop式を使用して、プラットフォームの非表示と表示をループし、毎回Sleep()を呼び出します。 完成したdisappear_on_loop_componentクラスは次のようになっています。Verseusing { /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):コードを保存してコンパイルします。
UEFN のアウトライナーで、DisappearingPlatform エンティティを「disappearing_platform_prefab」という名前のプレハブに昇格させます。 プレハブでは、あとで必要であれば、消えるプラットフォームのインスタンスをさらに作成し、すべての外観と基本実装を更新することができます。 プレハブをエンティティに昇格させる方法については、「 プレハブとプレハブ インスタンス 」を参照してください。
完全なスクリプト
このセクションで作成した完全なコードを以下に示します。
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):