【问题标题】:LibGDX - Mouse sensitivity affected by framerate while cursor is catchedLibGDX - 捕获光标时鼠标灵敏度受帧速率影响
【发布时间】:2018-09-23 15:34:58
【问题描述】:

我正在开发一个小型的俯视图游戏。相机可以在一定的视野范围内通过鼠标移动,而使用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) 问题解决并且相机响应不再受帧率影响。但是,显然,这样一来,现在第二个光标就会在整个屏幕上浮动并努力超越它的边界。

【问题讨论】:

    标签: java libgdx 2d


    【解决方案1】:

    通过手动计算鼠标增量解决如下:

    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);
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2014-04-06
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2014-07-20
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多