ビジュアルスクリプティングチュートリアル (Logic Bricks)
全アイテムを集めた後の扉の開け方
Lesson 7 of 10 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
このレッスンでは、以前に作成した収集可能なアイテムのロジックを使用して、ゲーム内でアクションをトリガーします。
例として、プレイヤーの進行を妨げるドアを、マップ内のすべてのアイテムが収集された後にシーンから削除する方法を説明します。
これは非常に一般的なゲームプレイ構造です:プレイヤーが目標を達成すると、ゲームが何かを解除する反応をします。それはドアやプラットフォーム、エレベーター、橋、カットシーン、ボス戦、または他の進行イベントである可能性があります。
このレッスンでは、別のエンティティのロジックから1つのエンティティにアクセスして操作する方法を学びます。この場合、プレイヤーは収集進捗を確認し、ドアをシーンから削除します。
1. ドアを削除するロジックを作成する
まず、新しいエンティティテンプレートを作成して、ドアを設定します。
ドアの視覚的表現として使用されるメッシュを構成し、ドアがプレイヤーの通行を妨げるための物理コンポーネントを追加します。
ドアがキャラクターを通過させないようにするために、物理コンポーネントでゴーストオプションを有効にしないでください。
ゴースト物理ボディは衝突を検知できますが、物理的に動きを妨げることはありません。収集可能なアイテムの場合、それは私たちが望んでいたことでした。しかし、ドアに関しては、条件が満たされるまでプレイヤーが通過できないようにする必要があります。
3キーを押すことで、エンティティの衝突プレビューを視覚化できます。これは、物理形状がドアに正しく対応しているかを確認するのに役立ちます。
Caveは物理形状を構成するための異なる方法を提供します。オブジェクトのメッシュを衝突に使用するか、物理専用に作成された異なる最適化モデルをインポートするか、プロジェクト内の他のメッシュを衝突形状として使用することができます。
あなたのゲームのニーズとパフォーマンスに最も適したオプションを選択してください。

以前に作成したシステムは、ドアを削除するタイミングを制御するために必要な情報を正確に提供します。
シーン内での収集可能なアイテムの合計数を自動的に計算し、マップ内に存在するアイテムが何個あっても、プレイヤーによって既に収集されたアイテムの数を追跡します。
これにより、ロジックは非常に柔軟になります。レベルにアイテムを追加または削除するたびに手動で数を変更する必要がありません。カウンターは正しく機能し続け、シーン内で利用可能な収集アイテムの数に自動的に適応します。

収集されたアイテムと合計アイテムの2つの情報が利用可能であれば、両方の値を単純に比較できます。
収集されたアイテムの数がマップ内のアイテムの合計数と等しい場合、プレイヤーはすべての収集アイテムを見つけ、通路を開くために必要な目標を達成したことを意味します。
この条件から、シーンからドアを削除し、プレイヤーが次のエリアに進むことを可能にするロジックを実行します。
TextCollectを更新した後、マップ内のすべてのアイテムが既に収集されているかどうかを確認します。
そのためには、収集アイテムと最大アイテムプロパティを取得し、比較ノードを使用して両方の値が等しいかどうかを検証します。
条件が真であれば、プレイヤーはシーン内ですべての利用可能なアイテムを収集し、進行を解除するために必要な要件を達成したことを意味します。

この検証から、ドアを削除して次のエリアへのアクセスを許可するロジックを実行できます。
これを行うには、プレイヤーのロジックからエンティティにアクセスして操作します。
最初に、シーンを取得し、名前でエンティティを取得ノードを使用して、ドアエンティティの名前を渡します。この場合の名前はドアです。
このノードは、その名前で見つかったエンティティのリストを返します。
次に、Getノードを使用してインデックス0の要素を取得します。これは、その名前で見つかった最初のエンティティに対応します。
最後に、そのエンティティをKillノードに接続します。
このロジックが実行されると、ドアはシーンから削除されます。

ここで何が起こっているかを理解することが重要です。
プレイヤーは、ドアの親または子エンティティとして直接接続されているわけではありません。代わりに、プレイヤーは現在のシーンを取得し、ドアという名前のエンティティを検索し、結果リストからそれを取得し、次に削除します。
これは、1つのオブジェクトがシーン内の別のオブジェクトに影響を与えるロジックを作成できることを意味しており、ゲームプレイのインタラクションを作成するために不可欠です。
考慮すべき重要な点は、名前でエンティティを取得はリストを返すため、同じ名前のエンティティが複数存在する可能性があるということです。この例では、インデックス0を取得しており、最初に見つかった結果を使用しています。このシンプルなケースではそれで問題ありませんが、より大きなプロジェクトでは、重要なエンティティ名を整理したり、タグや他の参照を使用したりすることをお勧めします。
このロジックは多くの異なる方法で拡張できます。
この例では、すべてのアイテムの収集を使用してドアを削除しましたが、同じ原則はゲーム内のほぼすべてのイベントに適用できます。
ドアを削除する代わりに、あなたは:
- プラットフォームを移動する
- エレベーターを作動させる
- カットシーンを再生する
- レバーを有効にする
- ボス戦を開始する
- 新しいエリアをアンロックする
- 敵を生成する
- レベルの目的を変更する
最も重要なことは、これでCaveのビジュアルロジックを使用して目標と報酬を作成するために必要なツールを手に入れたということです。
そのため、素晴らしい練習として、このシステムをこのレッスンで示された例から異なる何かに適応してみてください。独自の条件、報酬を作成し、これまで学んだすべてのことを使用して新しい可能性を探求できます。
