0

我正在像这样测量 deltaTime:

deltaTime = (System.nanoTime()-startTime) / 1000000000.0f;
            startTime = System.nanoTime();

但是我总是得到不同的浮点值,因此我的游戏口吃。这可能是什么问题?

09-03 03:51:59.219: D/a(21807): 0.017184043
09-03 03:51:59.234: D/a(21807): 0.016405167
09-03 03:51:59.249: D/a(21807): 0.018071748
09-03 03:51:59.269: D/a(21807): 0.015293334
09-03 03:51:59.284: D/a(21807): 0.016080335
09-03 03:51:59.299: D/a(21807): 0.018669458
09-03 03:51:59.314: D/a(21807): 0.014720625
09-03 03:51:59.334: D/a(21807): 0.01605596
09-03 03:51:59.349: D/a(21807): 0.017086169
4

3 回答 3

0

如果您每帧都执行此代码,这意味着这是渲染 1 帧所需的时间。

您应该根据 进行计算( x distance per second ) * deltaTime,因此您将获得基于每秒帧数的平滑动画。

于 2012-09-03T01:24:12.063 回答
0

这是来自“Beginning Android Games”的伪代码片段:

float lastFrameTime = currentTime();
while(!userQuit()) {
    float deltaTime = currentTime() – lastFrameTime;
    lastFrameTime = currentTime();
    currentScreen.updateState(input, deltaTime);
    currentScreen.present(graphics, audio, deltaTime);
}

不确定这是否会有所帮助...

于 2012-09-03T03:34:35.793 回答
0

开始 Android 游戏不是一本好书。

如果您在每一帧测量增量,您的计算每次都将使用不同的值。这对抛射体运动和非平凡的物理产生了非常糟糕的结果。为获得最佳结果,请将 delta 固定为一个合理的值(即 1/60),如果自开始以来小于 1/60,则让线程在所有绘图结束时等待。

于 2012-12-01T16:55:55.327 回答