我对 Libgdx 非常陌生。我浏览了许多有用的教程,但没有一个实现以下结构。 我已经实现了一个可移动对象,它是 InputAdapter 的扩展,并覆盖 keyDown/Up 以更新其(对象)位置。 现在,我已经实现了一个 touchPadController 类,它具有在屏幕上可见的触摸板和旋钮。 然后,我添加了一个变量,它是 touchPadController 类的对象。
我 future 的最终目标是将控件类与任何可移动对象/角色完全分离。
问题: 我只想对可移动对象/字符调用 setInputProcessor,而不是直接对 touchPadController 类调用。我希望父可移动对象调用它自己的控件。 但是,我不知道 touchPadController 函数的调用会发生在哪里?
我尝试过,但没有成功:
//可移动物体 @覆盖 公共(public) boolean touchDown(int screenX,int screenY,int指针,int按钮){ Gdx.input.setInputProcessor(touchPadController); } //触摸板 Controller @覆盖 公共(public) boolean touchDown(int screenX,int screenY,int指针,int按钮){ parent.newSpeedX = touchpad.getKnobPercentX() * 速度; parent.newSpeedY = touchpad.getKnobPercentY() * 速度; 返回真; }
*我应该在父级(可移动对象)中的哪里调用 touchPadController?
最佳答案
将 Controller 和角色/实体分开,如下所示:
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 的某个位置创建 Controller 的实例,通过 setControlle 将受控器附加到它,并将其设置为输入处理器,如下所示:
Controller myController = new Controller();
myController.setControllee(/*one of your movable objects*/);
Gdx.input.setInputProcessor(myController);
关于java - Libgdx:如何将控件与可移动对象分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681226/