【问题标题】:How to use delta time in a Java game?如何在 Java 游戏中使用增量时间?
【发布时间】:2015-12-12 02:10:15
【问题描述】:

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

long time = System.currentTimeMillis();

然后在游戏循环中我有

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

我想使用增量时间来确保球每 30 毫秒在 X、Y 方向移动 1 个像素。计算 changeInTime/40 移动球的速度比我看到的要快,然后它卡在角落里。有什么想法吗?

【问题讨论】:

  • 有一个完整的 Game Development StackExchange 网站。 gamedev.stackexchange.com/questions/13008/…
  • 你的changeInTime不是否定的吗?不应该是int changeInTime = (int) (currentTime-time),也可以使用System.nanoTime(),不然操作系统时钟变化时会出现搞笑的小故障。

标签: java timedelta


【解决方案1】:

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

【讨论】:

  • 那你是怎么得出没有渲染线程的,而且画完帧后不休眠的结论呢?线程休眠这一事实并不能否认计算经过的时间量的必要性。
  • 我确实使用线程来为球设置动画,但我遇到的问题是没有增量时间,球似乎突然减速然后加速。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
相关资源
最近更新 更多