Libgdx CameraController限制区域

时间:2014-06-25 11:21:51

标签: libgdx

我使用了许多输入控制器。一个用于控制摄像机,另一个用于控制放置在场景中的按钮。

我一直在努力研究如何创建自己的自定义控制器,但到目前为止,找不到有关如何操作的教程是不成功的。

如果触摸或手势低于某个高度,我也想停用相机控制器。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

只需创建一个班级CamController implements InputProcessor(或extends InputAdapter) 然后覆盖你需要的所有方法(我在这里使用touchDown作为例子)并执行以下操作(Pseudocode !!!不要复制和粘贴!!!):

protected boolean touchDown(int screenX, int screenY, int pointer, int button) {
    boolean handled = false;
    if (screenX <= maxX && screenX >= minX && screenY <= maxY && screenY >= minY) {
         // The touch is inside the limits of the camera controller, the controller is activated
         // Move camera to the touchpoint:
         camera.position.set(screenX, screenY);
         camra.update();
         handled = true;
    }
    return handled;
}

为按钮创建控制器,控制器再次实现InputProcessor覆盖方法 接下来在您的ApplicationListenerScreen create()show()方法中创建InputMultiplexer

InputMultiplexer m = new InputMultiplexer(new CamController(camera, limitX, limitY), new ButtonController);

您只需将InputMultiplexer设置为有效InputProcessor 使用CamController作为第一个非常重要,因为它会调用touchDown - 方法,只有当touchDown返回false时才调用touchDown ButtonController

希望它有所帮助。