0

I'm trying to get the time using android and open gl for my racing game.

My code now is:

 deltaTime = (System.currentTimeMillis() + startTime) / 1000000000000.0f;
 startTime = System.currentTimeMillis();
 tickTime += deltaTime;
 DecimalFormat dec = new DecimalFormat("#.##");
 Log.d("time", dec.format(tickTime/100));

but it's a bit too fast.

4

2 回答 2

2

您可能想看一下 Android Breakout:

http://code.google.com/p/android-breakout/source/browse/src/com/faddensoft/breakout/GameState.java#1001

计算类似,但请注意它使用System.nanoTime(),它使用单调时钟。您不想使用System.currentTimeMillis(),它使用挂钟。如果设备连接到网络,则可以更新挂钟,这可能会导致向前或向后大幅跳跃。

该代码还包括一个(禁用的)帧速率平滑实验,这似乎并不重要。

正如我认为您发现的那样,这种方法的关键是要认识到帧之间的时间间隔不是恒定的,您需要根据实际经过的时间来更新游戏状态,而不是显示更新频率的固定概念。

于 2013-01-15T20:56:28.483 回答
0

由于您以毫秒为单位工作,您不应该除以 1000f 而不是 1000000000000.0f 吗?

于 2013-01-02T20:20:06.933 回答