使用delta计算经过的时间

时间:2015-04-13 15:57:29

标签: java math timedelta

我必须在我的代码中犯一些愚蠢的错误。在我的脑海里,这应该可以工作,但是计时器工作得太快了(我希望在几秒钟内留下时间)。

我的代码:

timeElapsed = 0;
timeLeft = 60;
//delta = time it took to get through one frame (60 fps). 

timeElapsed += delta/getFramesPerSecond(); //FPS = 60f
timeLeft -= timeElapsed; //timeLeft starts at 60 (seconds)
timeDisplay = "Time left: " + timeLeft;

我已经检查过FPS总是60,我在这里缺少什么?

Delta样本打印:

0.016969847
0.017038532
0.017123796
0.017026689
0.016969848
0.017059453
0.01697774
0.016987609
0.017073665
0.017035767
0.01708432

1 个答案:

答案 0 :(得分:1)

timeElapsed+timeLeft应该是一个常量(因此两者都应该以相反的方向改变相同的数量),但是,您反复将timeLeft减少timeElapsed

timeElapsed中的步骤1的示例示例中,您的代码提供了

timeElapsed   timeLeft
    0            60
    1            59
    2            57
    3            54
    4            50
    5            45
    6            39
    7            32

将代码更改为

timeDelta    = delta/getFramesPerSecond(); 
timeElapsed += timeDelta; 
timeLeft    -= timeDelta; 
timeDisplay  = "Time left: " + timeLeft;