【发布时间】:2013-03-26 22:53:35
【问题描述】:
我已经在 Java 游戏上工作了几个月,但我遇到了一个问题。
我的Player 在Environment 中四处走动,该Environment 由都有自己的CollisionBox 的图块组成。简而言之:当Player 的CollisionBox 与另一个CollisionBox 碰撞(比如一个盒子或其他东西),那么玩家就不能移动了。那部分已经处理好了。
我正在尝试引入InteractiveTiles,其中Player 与特定的CollisionBox(例如楼梯或门)碰撞会导致某些事情发生。具体来说,如果特定 *InteractiveTile* 被击中,我希望能够转换到新的 Environment。
我有转换和重绘碰撞贴图的功能,但我不知道如何让碰撞事件告诉环境(这在碰撞的代码层次结构中并不方便事件)。
我熟悉观察者模式,其中Environment 可以“听到”这种冲突,但我不确定它会如何在这里实现,或者即使这是适合这种情况的正确设计模式!
更简单...
在调用Player.IsCollidingWithDoorLeadingToNewEnvironment(newEnvironment)时,应该调用Environment.TransitionToNewEnvironment(newEnvironment),但在代码结构中它们相距甚远。
更广泛地说:如何在没有层层方法/构造函数注入的情况下在两个类之间发送消息?
【问题讨论】:
-
为什么不创建另一个包含公共静态方法的类,以便玩家和环境都可以访问?
-
听众的想法?
标签: java game-engine slick2d class-structure