我正在尝试使用Gdx.input.isKeyPressed();
处理键盘输入。起初,我处理了 asdw 输入,一切都很顺利。但是当下面的几行我尝试处理按键输入时,它不起作用。
当我调试它时,我可以看到它总是将 ifs 计为 true(换句话说,他的行为就像所有箭头都始终被按下),但这不会在“asdw”检查中发生.
当我尝试将按键更改为常规字母时,问题仍然出现。
代码:
public void update(float deltaTime)
handleDebugInp(deltaTime);
updateTestSprites(deltaTime);
cameraH.update(deltaTime);
}
private void handleDebugInp(float dt) {//for enabled long pressed buttons
if(Gdx.app.getType() != ApplicationType.Desktop)//proceed with debugging only on pc
return;
/*keys movement*/
float spriteSpeed = 5 * dt;//moves 5 meters per second
if(Gdx.input.isKeyPressed(Keys.A))//if A is pressed
moveCurrSprite(-spriteSpeed, 0);//move left
if(Gdx.input.isKeyPressed(Keys.D))//if D is pressed
moveCurrSprite(spriteSpeed, 0);//right
if(Gdx.input.isKeyPressed(Keys.W))//if W is pressed
moveCurrSprite(0, spriteSpeed);//up
if(Gdx.input.isKeyPressed(Keys.S))//if S is pressed
moveCurrSprite(0, -spriteSpeed);//down
/*Camera movment*/
//speed
float cameraSpeed = 5 * dt;
float accelerationFactor = 5;
//sprint
if(Gdx.input.isKeyPressed(Keys.SHIFT_LEFT));
cameraSpeed *= accelerationFactor;
//movement
if(Gdx.input.isKeyPressed(Keys.LEFT));
moveCamera(-cameraSpeed, 0);
if(Gdx.input.isKeyPressed(Keys.RIGHT));
moveCamera(cameraSpeed, 0);
if(Gdx.input.isKeyPressed(Keys.UP));
moveCamera(0, -cameraSpeed);
if(Gdx.input.isKeyPressed(Keys.DOWN));
moveCamera(0, cameraSpeed);
}
private void moveCamera(float x, float y) {
x += cameraH.getPosition().x;
y += cameraH.getPosition().y;
cameraH.setPosition(x, y);
}
如果有人知道问题所在,我会很高兴让我知道。
谢谢。
最佳答案
我给你一个提示。这两行之一上有一个杂散的 ;
:
if(Gdx.input.isKeyPressed(Keys.LEFT));
moveCamera(-cameraSpeed, 0);
(并且您将相同的问题粘贴到其他行上)。
关于java - Libgdx 认为键盘总是被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957984/