私はここ数ヶ月Javaゲームに取り組んでいますが、問題が発生しました。
私は、すべてが独自のタイルで構成さPlayer
れているを歩き回っています。簡単に言えば、'が別のもの(ボックスなど)と衝突すると、プレーヤーは移動できなくなります。その部分は面倒を見てくれます。Environment
CollisionBox
Player
CollisionBox
CollisionBox
階段やドアなどの特定のものと衝突すると何かが発生するInteractiveTile
sを紹介しようとしています。具体的には、特定の* InteractiveTile *がヒットした場合に、新しいものに移行できるようにしたいです。Player
CollisionBox
Environment
衝突マップを遷移して再描画する機能はありますが、その衝突イベントを環境に通知する方法がわかりません(これは、衝突イベントへのコードの階層では便利ではありません)。
私はEnvironment
この衝突を「聞く」ことができるオブザーバーパターンに精通していますが、ここでどのように実装されるか、またはそれがこの状況に適したデザインパターンであるかどうかはわかりません。
さらに簡単に...
がPlayer.IsCollidingWithDoorLeadingToNewEnvironment(newEnvironment)
呼び出されるEnvironment.TransitionToNewEnvironment(newEnvironment)
と、が呼び出される必要がありますが、コード構造内で互いに大きく離れています。
より広義には、メソッド/コンストラクターインジェクションのレイヤー上にレイヤーなしで2つのクラス間でメッセージを送信するにはどうすればよいですか?