在功能强大的设备上,游戏速度较慢。我用三角洲

时间:2019-06-12 14:54:42

标签: java libgdx

为什么android游戏在功能最强大的设备上最慢,但是在标准设备上游戏却是正常的,而在次标准设备上游戏却很快(我是指游戏中的移动)。

我尝试将游戏对象的速度乘以增量,并尝试将FPS限制为60f / s。

    @Override
    public void render(float delta) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        camera.update();
        stage.act(Math.min(delta, 1 / 61f)); // At now i try with limit
        stage.draw();
        if (!isPaused && isAlive()) {
            if (Gdx.input.getPressure() > 0) balloon.setDir(true);
            else balloon.setDir(false);
            updateLogic(Math.min(delta, 1 / 61f));
        }

/// Its render.

if (getUser().getCurrentLocation().isPaused()) return;
        float tempSpeed = speed * delta;

// Its velocity calculation;

1 个答案:

答案 0 :(得分:0)

Math.min()可能导致在不同设备上移动速度变化的问题。

让我们谈谈三种不同的情况:

  1. 慢速设备:30帧/渲染呼叫,平均。增量0.033 s

    Math.min(0.033, 0.016) == 0.016
    
  2. 普通设备:平均60 FPS /渲染调用。增量0.017 s

    Math.min(0.017, 0.016) == 0.016
    
  3. 快速设备:120 FPS /渲染调用,平均。增量0.008 s

    Math.min(0.008, 0.016) == 0.008
    

您可以看到在调用Math.min()之后,慢速设备上的增量时间与正常设备上的时间相同,从而导致慢速设备上的速度降低。

如果要限制FPS,则应在渲染循环中使用Thread.sleep()或类似的解决方案,而不要使用Math.min()。您的解决方案不限制FPS,而仅修改更新速度。

This post at libGDX forum介绍了一种限制FPS的解决方案。