我已经在 Java 游戏上工作了几个月,但我遇到了一个问题。
我Player
在一个里面走来走去Environment
,里面是由都有自己的瓷砖组成的CollisionBox
。简而言之:当Player
'CollisionBox
与另一个碰撞CollisionBox
(如盒子或其他东西)时,玩家无法移动。那部分得到了照顾。
我正在尝试引入InteractiveTile
s,Player
如果它与特定CollisionBox
的 (例如楼梯或门)发生碰撞,将导致某些事情发生。Environment
具体来说,如果特定 *InteractiveTile* 被击中,我希望能够转换到新的。
我有转换和重绘碰撞贴图的功能,但我不知道如何让碰撞事件告诉环境(这在碰撞事件的代码层次结构中并不方便)。
我熟悉观察者模式,其中Environment
可以“听到”这种冲突,但我不确定它会如何在这里实现,或者即使这是适合这种情况的正确设计模式!
更简单的...
当Player.IsCollidingWithDoorLeadingToNewEnvironment(newEnvironment)
被调用时,Environment.TransitionToNewEnvironment(newEnvironment)
应该被调用,但它们在代码结构中彼此相距甚远。
更广泛地说:如何在没有层层方法/构造函数注入的情况下在两个类之间发送消息?