首页 文章

箭头键优先(java rpg游戏)

提问于
浏览
0

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

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

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个图块时,它再次检查箭头键输入以查看下一个需要的方向 .

What causes the problem :每当玩家向左,向右或向下移动并按住其中一个按钮并决定按下时 . Up将优先考虑,即使玩家最初向下移动,玩家也会开始向上移动 .

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

1 回答

  • 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;
    }
    

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

相关问题