opengl android时间太快了

opengl android时间太快了,android,opengl-es,time,Android,Opengl Es,Time,我正试着用android和OpenGL为我的赛车游戏争取时间 我现在的代码是: deltaTime = (System.currentTimeMillis() + startTime) / 1000000000000.0f; startTime = System.currentTimeMillis(); tickTime += deltaTime; DecimalFormat dec = new DecimalFormat("#.##"); Log.d("time", dec.form

我正试着用android和OpenGL为我的赛车游戏争取时间

我现在的代码是:

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

但是它有点太快了。

因为你是以毫秒为单位工作的,你不应该除以1000f而不是100000000000.0f吗?

你可能想看看Android的突破:

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

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


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

您的意思不是
deltaTime=(System.currentTimeMillis()-startTime)/100000000000.0f用减号代替加号?用减号我只得到0,1。我的意思是,我的代码可以工作,它从0开始,然后上升,但有点快,就像一周的3/4sec@DonKanallie增量时间应该“相对接近0”和“大致相同”(比如在1-50毫秒的范围内)。另外,我建议使用毫秒作为增量时间(因为精度不会更好),它们是“更小”的值:
deltaTime=System.currentTimeMillis()-startTime
。(…到底什么是“稍微快一点”的意思?)我刚刚知道了。这是基于帧的,所以它不是不断的。我只是注意到在我的更新方法中,我从我的框架中获得了deltaTime。所以这是一个非常简单的解决方案
time=time+deltaTime;DecimalFormat dec=新的DecimalFormat(“#.##”);Log.d(“时间”,12月格式(时间))谢谢你的尝试=)我刚收到。这是基于帧的,所以它不是不断的。我只是注意到在我的更新方法中,我从我的框架中获得了deltaTime。因此,这是一个非常简单的解决方案=)
time=time+deltaTime;DecimalFormat dec=新的DecimalFormat(“#.##”);Log.d(“时间”,12月格式(时间))谢谢大家的尝试=)哦,好的:)你在用什么框架?我现在正在尝试LIBGDX,它也给了你deltaTime。我正在使用Techner Mario的“Begging Android应用”电子书。是的!这就是我开始使用的:)它是LIBGDX框架的基础,基本上解释了框架是如何构建的。真的很有帮助。祝你好运