我正在尝试创建一个游戏,其中在计时器上生成的对象然后开始移动。我想保持帧速率与游戏速度无关,所以我试图实现增量时间:
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上看了几个问题,但我认为我必须误解一些事情,因为我无法让它发挥作用。
答案 0 :(得分:0)
所以这似乎没有答案,Jon Skeet(显然)是正确的:
10/1000的计算正在执行(在编译时)整数运算,所以它是0 ...尝试10 / 1000f,或者只是0.01f。