Libgdx检测水平滚动

时间:2017-06-06 23:55:32

标签: java libgdx

我正在使用libgdx游戏库开发一个仅限桌面的项目,我正在寻找一种方法,当用户水平滚动以平移相机时。如果可能的话,我想避免使用libgdx的scene2d。但是,我看不到找到捕捉水平卷轴的方法。无论如何在Libgdx中检测水平鼠标滚动?如果可能的话,我想避免使用libgdx的scene2d。如果没有,是否有办法使用普通的java,而不使用awt,swing或javafx?

1 个答案:

答案 0 :(得分:0)

水平鼠标滚动?除非您使用具有多个滚轮的鼠标,否则没有这样的事情。通常鼠标有一个滚轮。

但是,如果您的意思是水平移动鼠标,则应该能够使用getDeltaX()捕获鼠标。请注意,它是原始输入,因此您需要将其除以屏幕宽度,以便在您使用的任何显示器上进行相同的移动。您可能还希望包含灵敏度乘数,以便用户可以选择平移的速度。

通过检查按键是否按下,允许使用相同的输入旋转摄像机通常很有帮助。考虑这个伪代码:

void updateCamera() {
    if (LeftShiftPressed()) {
        RotateCamera(getNormalizedX());
    } else {
        PanCamera(getNormalizedX());
    }
}

float getNormalizedX() {
    return float(getDeltaX()) / float(getScreenWidth())
}

void PanCamera(float x_movement) {
    // pan by x_movement * pan_multiplier
}

void RotateCamera(float x_movement) {
    // rotate by x_movement * rotation_multiplier
}