2016-05-29 86 views
2

我创建一个小游戏作为我的学习项目,使用Java和Libgdx。 游戏非常简单:2D,侧视图,用箭头键控制,一切都看起来像在一个网格划分单位(球员是1个单位高,环境潮汐是1单位高,...)。 问题在于角色的移动很快(并且必须是),所以很难只向左或向右移动一个单位。 我想知道是否可以在键盘的两个输入之间创建一个延迟,因为运动部分处于“更新”方法中,所以每次按下它创建的键时,都会有5或10个输入。 我试图用Java定时器(如0.2或0.3秒)来处理它,每次按下按键时都会发生这种情况,并且无法让程序在监听完键盘之前收听键盘。但我发现它很脏,所以我要求你的帮助,以更体面的方式引导我做到这一点。谢谢。两个输入之间的延迟java

+0

当你做GUI游戏思考游戏循环。看它会让你的生活更轻松。 http://gameprogrammingpatterns.com/game-loop.html –

回答

0

通过比较上次使用时间和当前时间,可以轻松实现一种冷却类型的东西。

double coolDownInMillis = 1200; 
double lastTime = 0; 

public void move() { 
    double now = System.currentTimeMillis(); 
    if(lastTime - now > coolDownInMillis && pressingTheRightKey()){ 
     //do what you want 
     lastTime = System.currentTimeMillis(); 
    } 
} 

或类似的东西。

+0

我认为这会做到这一点。谢谢。 – Herawo

+0

@ Herawo如果是这样,请将我的答案标记为工作解决方案。 – eldo