我尝试使用Gdx.input.isKeyPressed();
处理键盘输入。起初我处理了asdw
输入,一切都很顺利。但是当我在下面几行尝试处理按键输入时,它没有用。
当我调试它时,我可以看到它始终将ifs视为真(换句话说,他的行为就像所有的箭头一直被按下),但是这并不是&# 34; 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);
}
如果有人可能知道问题是什么,如果他能告诉我,我会很高兴。
感谢。
答案 0 :(得分:2)
我会给你一个提示。在这两行之一上有一个迷路;
:
if(Gdx.input.isKeyPressed(Keys.LEFT));
moveCamera(-cameraSpeed, 0);
(你将同样的问题粘贴到其他行上)。