これは設計上の質問です...これはもっと一般化できると思いますが、私はそれに苦労しています。ゲームオブジェクトインタラクションのデザインについて疑問に思っています。これが私の例です(2Dパズルプラットフォーム)。
プレイヤーがレベルを進めようとしているとしましょう。さまざまな方向に向けることができる多くのライトがあります。以下は、これらのライトオブジェクトがどのように相互作用するかの例です。
- ある光は、プレイヤーがギャップを越えることができるプラットフォームを投影します
- 1つのライトは、触れるものの摩擦係数を下げ、別のライトはそれを増やします
- 1つのライトはすべてのライトの効果を無効にします。これにより、そのライトがオンのときにプラットフォームが消え、摩擦調整剤が無効になります。
- 等...
コンポーネントアーキテクチャを使用する場合、この問題に対処する最良の方法は何ですか?各主要オブジェクトのコンポーネントは明らかであり、環境への影響を明確に定義する方法もあります。相互作用を「解決」するクラス(そのようなものはすぐに混乱する可能性があります)?特定の時間に相互作用しているオブジェクトの結合オブジェクトを作成するためのデコレータパターンの使用法 これに役立つデータ構造?
また、これらのインタラクションにオーディオを接続しますか?オーディオをシステムに接続することは、可視性やプレーヤーの移動/衝突など、他のプロパティを接続するのと同じように思えます。
コンポーネントが追加されるにつれて、新しいコンポーネントをほとんど変更せずに処理できる堅牢なシステムがあればよいのは明らかですが、これをどのように設計するかについてはよくわかりません。
その他の情報:私が使用しているエンジンは、IceCreamと呼ばれるXNAエンジンです。