Delta时间未正确计算

时间:2014-07-10 05:38:01

标签: java android interpolation frame-rate game-loop

我正在尝试创建一个游戏,其中在计时器上生成的对象然后开始移动。我想保持帧速率与游戏速度无关,所以我试图实现增量时间:

lastTime = thisTime;
thisTime = (int) SystemClock.currentThreadTimeMillis();
deltaTime = thisTime - lastTime;

for (int i = 0;i < objectList.size();i++) {
    objectList.get(i).updatePosition(deltaTime);
    objectList.get(i).display(bitmapCanvas);
}

我的updatePosition方法:

public void updatePosition(float deltaTime) {
    this.y += 10/1000 * deltaTime;

}

根据我的理解,速率(在这种情况下为10)应该除以1000,因为deltaTime以毫秒为单位,但我也尝试了各种其他值,并且对象只是在屏幕上产生并且不移动。在尝试实现插值之前,我没有任何问题让它们移动。

如果它有帮助,我记录的是delta时间,通常是20/30左右。这是正常的吗?

我在GameDev上看了大概5到6个问题,在Stack Overflow上看了几个问题,但我认为我必须误解一些事情,因为我无法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

所以这似乎没有答案,Jon Skeet(显然)是正确的:

  

10/1000的计算正在执行(在编译时)整数运算,所以它是0 ...尝试10 / 1000f,或者只是0.01f。