我正在努力为我的赛车游戏使用android和open gl。
我的代码现在是:
deltaTime = (System.currentTimeMillis() + startTime) / 1000000000000.0f;
startTime = System.currentTimeMillis();
tickTime += deltaTime;
DecimalFormat dec = new DecimalFormat("#.##");
Log.d("time", dec.format(tickTime/100));
但它有点太快了。
答案 0 :(得分:2)
你可能想看一下Android Breakout:
计算类似,但请注意它使用System.nanoTime()
,它使用单调时钟。您不想使用使用挂钟的System.currentTimeMillis()
。如果设备连接到网络,则可以更新挂钟,这可能导致向前或向后跳跃。
该代码还包括一个(禁用的)帧率平滑实验,这个实验看起来并不重要。
我认为你发现,这种方法的关键是要认识到帧之间的时间间隔不是恒定的,你需要根据实际经过的时间更新游戏状态,而不是固定的显示概念更新频率。
答案 1 :(得分:0)
由于你在毫秒内工作,你不应该除以1000f而不是1000000000000.0f吗?