Libgdx:如何从另一个输入处理access/modify Box2D World class?

Libgdx: How to access/modify Box2D World from another input processing class?

我正在开发一款小游戏,我正在努力让事情尽可能整洁。我已将输入处理器拆分为另一个 class,并且工作正常。我还设置了一个 playState class 来处理和创建 Box2D 的主体和固定装置。

并且在我的输入处理中class:

public class TouchProcessor implements InputProcessor  {

    //.....

    @Override
        public boolean touchDragged(int screenX, int screenY, int pointer) {
            System.out.println("Dragging...");
            touchHappening = true;

            return true;
        }

    // ....

现在在触摸拖动时,我想从 Box2D 世界重新定位一个 body/camera。但是如果我将它与 playState 分开,我将无法访问我的处理器 class 中的那些。我该怎么做?

每次解耦应用程序部分时(顺便说一句,这是个好主意),您都需要一个策略,让不同的部分协同工作。

一种经常在野外看到的解决方案是使用某种中央单例来使其他代码可以访问重要的游戏方法。但是单例有自己的flaws。另一种方法是在这里使用某种事件系统。

您可能想看看这些 decoupling patterns 以获得关于好的游戏架构的一些想法。