【问题标题】:Arrow keys priority (java rpg game)方向键优先(java rpg 游戏)
【发布时间】:2014-10-13 12:04:35
【问题描述】:

我正在使用 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 格时,它会再次检查箭头键输入以查看下一步需要移动的方向。

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

我试着用我最大的能力来解释这一点,因为如果不亲自尝试就很难理解。如果您需要更多解释或指向我的游戏的链接来自己尝试故障,请随时发表评论并询问这些内容。谢谢!

【问题讨论】:

  • 好的,那么您真正想要发生什么?您是否希望玩家在按下另一个键时继续朝同一方向前进?
  • 是的。但我已经修好了,但谢谢!在我发布这个之后,我想出了一个解决方案。
  • 解决方案:我添加了一个记录最后一个方向的int。然后每当按下一个键时,它会检查最后一个方向的键是否仍然被按下。如果是,它将再次运行该密钥的代码。如果不是,那么它将继续进行而不会中断。
  • @vedi0boy 如果您找到了满意的解决方案,请随时回答您自己的问题并将其标记为已接受的答案。

标签: java libgdx arrow-keys


【解决方案1】:

我所做的只是创建了一个 int 来保存最后按下的键。然后,每当按下其中一个箭头键时,它都会执行这样的 switch 语句(此 on 用于按下 up 时):

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

它检查最后按下的键是什么,如果它仍然被按下,它将在处理按下之前处理它被按下。如果最后一个键是向上的,它将脱离开关并继续处理向上的输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2011-10-16
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多