两个输入java之间的延迟

时间:2016-05-29 13:36:39

标签: java input libgdx delay

我正在创建一个小游戏作为我使用Java与Libgdx进行学习的项目。 游戏非常简单:2D,侧视图,用箭头板控制,所有东西都被看作是以网格划分的单位(玩家高1单位,环境潮汐高1单位,......)。 问题是角色的移动很快(而且必须是这样)所以很难只向左或向右移动1个单位。 我想知道是否可以在键盘的两个输入之间创建一个延迟,因为运动部分采用“更新”方式,所以每次按下一个键就会产生5或10个输入。 我试着用java定时器(比如0.2或0.3秒)来处理它,每次按下一个键时都会发生这种情况,并且无法让程序听到键盘直到定时器完成。但我发现它真的很脏,所以我请求你帮助带领我以更好的方式做到这一点。感谢。

1 个答案:

答案 0 :(得分: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();
    }
}

或类似的东西。