我正在使用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将优先考虑,即使玩家最初向下移动,玩家也会开始向上移动。
我尝试用最好的能力来解释这个问题,因为如果不自己动手就很难理解。如果您需要更多解释或链接到我的游戏来尝试自己的故障,请随意发表评论并询问这些事情。谢谢!
答案 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;
}
它会检查按下的最后一个键是什么,如果它仍然被按下,它会在按下处理之前处理它被按下。如果最后一个键已经启动,它将从交换机中断开并继续处理输入。