为什么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;
答案 0 :(得分:0)
Math.min()
可能导致在不同设备上移动速度变化的问题。
让我们谈谈三种不同的情况:
慢速设备:30帧/渲染呼叫,平均。增量0.033 s
Math.min(0.033, 0.016) == 0.016
普通设备:平均60 FPS /渲染调用。增量0.017 s
Math.min(0.017, 0.016) == 0.016
快速设备: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的解决方案。