1

我对 Libgdx 很陌生。我浏览了许多有用的教程,但没有实现以下结构。我已经实现了一个可移动对象,它是 InputAdapter 的扩展,并覆盖 keyDown/Up 以更新其(对象)位置。现在,我已经实现了一个 touchPadController 类,它有一个在屏幕上可见的触摸板和旋钮。然后,我添加了一个变量,它是 touchPadController 类的对象。

我未来的最终目标是将控件类与任何可移动的对象/角色完全分开。

问题:我只想将 setInputProcessor 调用到可移动对象/字符,而不是直接调用 touchPadController 类。我希望父可移动对象调用它自己的控件。但是,我不知道 touchPadController 函数的调用会发生在哪里?

  • 我试过了,但没有用:

    //movable object @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { Gdx.input.setInputProcessor(touchPadController); } //touchPadController @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { parent.newSpeedX = touchpad.getKnobPercentX() * Speed; parent.newSpeedY = touchpad.getKnobPercentY() * Speed; return true; }

*我应该在哪里调用父级(可移动对象)中的 touchPadController?

4

1 回答 1

1

像这样分开你的控制器和你的角色/实体:

public class Controller extends InputAdapter {
    private Entity _controllee;

    public void setControllee(Entity toControl) {
        _controllee = toControl;
    }

    // Override whichever InputAdapter methods you need to control your moveable objects, e.g.:
    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        _controllee.newSpeedX = touchpad.getKnobPercentX() * Speed;
        _controllee.newSpeedY = touchpad.getKnobPercentY() * Speed;
        return true;
    }
}

最后在 ApplicationListener 或 Screen 的某个地方创建控制器实例,通过 setControlle 将受控对象附加到它并将其设置为输入处理器,如下所示:

Controller myController = new Controller();
myController.setControllee(/*one of your movable objects*/);
Gdx.input.setInputProcessor(myController);
于 2014-03-27T10:49:03.843 回答