箭头键优先(java rpg游戏)

时间:2014-10-13 12:04:36

标签: java libgdx arrow-keys

我正在使用LibGdx开发java游戏,我需要你的帮助。

解释:箭头键有一个问题。让我解释一下我的代码是如何工作的。所以在我的更新方法中,我检查是否按下了键。如果他们是我处理他们。问题是我的代码在另一个之后检查。因此,它检查的第一个箭头键优先于所有其他键,因为如果按下它,它将首先被调用。例如:

public static void updateControls(){

    if(Gdx.input.isKeyPressed(Input.Keys.UP){
        //Make player move up...
    }
    if(Gdx.input.isKeyPressed(Input.Keys.DOWN){
        //Make player move down...
    }
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT){
        //Make player move left...
    }
    if(Gdx.input.isKeyPressed(Input.Keys.RIGHT){
        //Make player move right...
    }

}

顺便说一下,我的游戏是基础。当玩家完成移动1个牌时,它再次检查箭头键输入以查看下一个需要的方向。

导致问题的原因:每当玩家向左,向右或向下移动并按住其中一个按钮并决定按下时。 Up将优先考虑,即使玩家最初向下移动,玩家也会开始向上移动。

我尝试用最好的能力来解释这个问题,因为如果不自己动手就很难理解。如果您需要更多解释或链接到我的游戏来尝试自己的故障,请随意发表评论并询问这些事情。谢谢!

1 个答案:

答案 0 :(得分:0)

我所做的就是基本上创建了一个int,它可以保存最后一个要按下的键。然后,无论何时按下其中一个箭头键,它都会通过这样的开关语句(此按钮用于按下向上键):

switch(lastKey){
case DIRECTION_UP:
    break;
case DIRECTION_DOWN:
    if(Gdx.input.isKeyPressed(Input.Keys.DOWN)
        handleDownPressed();
    break;
case DIRECTION_LEFT:
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT)
        handleLeftPressed();
    break;
case DIRECTION_RIGHT:
    if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)
        handleRightPressed();
    break;
}

它会检查按下的最后一个键是什么,如果它仍然被按下,它会在按下处理之前处理它被按下。如果最后一个键已经启动,它将从交换机中断开并继续处理输入。