如何在Java游戏中使用增量时间?

如何在Java游戏中使用增量时间?,java,timedelta,Java,Timedelta,我正在尝试制作一个简单的Java游戏的动画,其中包括一个球的运动。我目前对球的计算是:当前X位置+X方向*球速度,Y也是如此。我想加入增量时间,以确保球始终以相同的速度移动。目前我有: long time = System.currentTimeMillis(); 那么在游戏循环中我有 long currentTime = System.currentTimeMillis(); int changeInTime = int(time-currentTime); time = currentTi

我正在尝试制作一个简单的Java游戏的动画,其中包括一个球的运动。我目前对球的计算是:当前X位置+X方向*球速度,Y也是如此。我想加入增量时间,以确保球始终以相同的速度移动。目前我有:

long time = System.currentTimeMillis();
那么在游戏循环中我有

long currentTime = System.currentTimeMillis();
int changeInTime = int(time-currentTime);
time = currentTime;

我想使用delta time来确保球每30毫秒在X,Y方向上移动1个像素。计算changeInTime/40使球移动得比我看到的快,然后球被卡在角落里。有什么想法吗?

如果你要制作一个游戏,最好使用一个线程来制作球的动画,如果你这样做,你可以使用“sleep()”方法延迟球。

有一个完整的游戏开发StackExchange站点。你的
changeInTime
不是负面的吗?它不应该是
int changeInTime=(int)(currentTime)
,也要使用
System.nanoTime()
,否则当操作系统时钟改变时,您会有有趣的小故障。您是如何得出结论的,没有渲染线程,并且在绘制帧后它不会休眠?线程休眠的事实并不否认计算所用时间的必要性。我确实使用了一个线程来设置球的动画,但是如果没有增量时间,我遇到的问题是,球似乎突然变慢,然后加速。