我正在开发一个小型的自顶向下视图游戏。可以通过鼠标在某个视图范围内移动相机,而使用Gdx.input.setCursorCatched(true)
隐藏光标,并在屏幕中间绘制一个人造的光标。这是处理相机移动的方式:
Vector2 deltaMouse = new Vector2(Gdx.input.getDeltaX() * mouseSensitivity,
-Gdx.input.getDeltaY() * mouseSensitivity);
relativeCameraPosition.add(deltaMouse);
relativeCameraPosition.limit(viewRange);
cameraPosition = playerPosition.cpy().add(relativeCameraPosition);
但是,我遇到了一个问题:游戏通常以超过1000 FPS的速度运行,但是在调用Gdx.graphics.setVSync(true)
并将FPS设置为60时,鼠标的灵敏度急剧下降,而相机的运动速度却慢了3倍。
我已经对其进行了一点检查,发现此问题与捕获的光标有关。如果我注释掉Gdx.input.setCursorCatched(true)
,问题就解决了,相机的响应速度不再受帧速率的影响。但是,显然,这样一来,现在第二个光标漂浮在整个屏幕上,并努力超越其边界。
答案 0 :(得分:0)
通过手动计算鼠标增量来解决,如下所示:
float mouseDeltaX = previousMousePosition.x - Gdx.input.getX();
float mouseDeltaY = previousMousePosition.y - Gdx.input.getY();
previousMousePosition.set(Gdx.input.getX(), Gdx.input.getY());
Vector2 deltaMouse = new Vector2(-mouseDeltaX * mouseSensitivity,
mouseDeltaY * mouseSensitivity);
relativeCameraPosition.add(deltaMouse);
relativeCameraPosition.limit(viewRange);
cameraPosition = playerPosition.cpy().add(relativeCameraPosition);