到目前为止,我正在为我的12年级计算机科学开展Pacman游戏。
我想让怪物自动在游戏中移动。我在游戏中使用Slick2D和LWJGL。我在游戏中有一些代码可以控制蓝色怪物移动的位置。
if (bluePosX < 400) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bluePosX++;
}
所以基本上我在屏幕上看到的是蓝色怪物自动朝着正确的方向移动。我唯一的问题是,当我使用Thread.sleep(100);
时,它会延迟整个屏幕。我只想延迟蓝色怪物在朝正确方向前进之前要等多久。我如何只延迟蓝色怪物图像而不是整个屏幕?
答案 0 :(得分:0)
我假设您设置游戏循环更新的频率,例如每秒60次= 60fps。在这种情况下,100ms等于6次更新(每次更新间隔1000/60 ms)。因此,请在更改bluePosX++
之前等待6次更新。
答案 1 :(得分:0)
我建议您使用更新方法中的delta。
请参阅:this
您可以在变量中计算增量,并在达到最大增量后执行特定操作。之后,您可以将deltaCounter重置为0.我不建议使用Thread.sleep或类似的任何东西。您可以使用Java Swing Timer,但通常使用delta来实现与时序相关的事情。它更容易并由您使用的引擎提供。