当前位置: 首页 > 知识库问答 >
问题:

箭头键优先(java rpg游戏)

司信厚
2023-03-14

我正在使用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个图块后,它会再次检查箭头键输入,看看下一步需要朝哪个方向移动。

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

我试着尽我最大的能力来解释这件事,因为如果不亲自尝试,很难理解。如果您需要更多的解释或我的游戏链接来尝试自己的小故障,请随意评论和询问这些事情。谢谢

共有1个答案

吴西岭
2023-03-14

我所做的只是创建了一个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;
}

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

 类似资料:
  • 问题内容: 我在JScrollPane中有一个JTextArea组件,并且文本区域不可编辑。我想使用向上和向下箭头键滚动文本区域(即,按箭头键将文本区域滚动一行)。任何想法如何实现这一目标? 问题答案: 是的,键绑定是必经之路,但是您不一定总是需要创建自己的动作。Swing组件带有您经常可以重用的默认操作。 有关这些操作的完整列表,请参见键绑定。 现在您知道了动作名称,您可以将其绑定到keyStr

  • 问题内容: 我正在用Java写一个简单的程序,其中包括一个KeyListener,下面是覆盖它们的KeyTyped方法: 当我键入除箭头键以外的其他任何字符(例如“ a”)时,它将按原样打印。但是,当我键入小键盘箭头键时,它只会打印,而当我键入标准箭头键时,它根本不会打印任何内容。这可能是因为我在笔记本电脑上,还是我在某个地方犯了一个愚蠢的错误? 问题答案: 是的,你将看到箭头键响应keyPres

  • 我试图模拟在rad grid控件(Telerik)的文本区域中按下左右箭头键。 我有一个特定于浏览器Firefox的错误,其中选项卡事件(修复了此部分)和箭头键将不起作用。所有其他浏览器工作正常。 因此,作为一种解决方法,我想使用JavaScript或jquery模拟箭头键。 下面是我使用包含的选项卡事件修复程序所做的工作。除此之外,我还检查按键代码37(这是左箭头键)是否被按下。此时,我想模拟文

  • 问题内容: 如何在Javascript和/或jQuery中将功能绑定到左右箭头键?我看了一下jQuery的js-hotkey插件(包装了内置的bind函数以添加一个参数来识别特定的键),但是它似乎不支持箭头键。 问题答案: $(document).keydown(function(e) { switch(e.which) { case 37: // left break; 将箭头键的自定义代码放在

  • 我现在正在实验JavaFX,教自己如何使用箭头键移动文本和项。我做了一个程序,如果按下箭头键,就可以简单地在舞台上移动文本。 我想使一个圆圈移动我的窗格,而不是文本。要使用箭头键移动我的圆圈,我必须做哪些更改?