2016-04-15 53 views
0

我在游戏中添加了一些东西,这样当你按下空间时,你会得到一个小的速度提升。但是,只有在使用WASD密钥时才能正常工作。如果按上下左右方向键,增强功能将不起作用,否则会起作用。任何人都可以解释它为什么这样做?有人可以解释这一点吗? (运动不能正常工作)

下面的代码:

boostTimer += Gdx.graphics.getDeltaTime(); 

    if(boostTimer > 3){ 
    snailBoost = 0; 
    boostTimer = 0; 
    } 

    //movement 
    if(Gdx.input.isKeyPressed(Keys.LEFT) || Gdx.input.isKeyPressed(Keys.A)){ 

     if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){ 
      snailBoost++; 
      snail.getBounds().x -= (snailSpeed + 100) * delta; 
     } 

     //flips the sprite 
     snail.getSprite().setFlip(false, true); 
     snail.getBounds().x -= snailSpeed * delta; 

     //handles what happens when you go outside the game world 
     if(snail.getBounds().x < -100)snail.getBounds().x = 1920; 
    } 

    if(Gdx.input.isKeyPressed(Keys.RIGHT) || Gdx.input.isKeyPressed(Keys.D)){ 

     if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){ 
      snailBoost++; 
      snail.getBounds().x += (snailSpeed + 100) * delta; 
     } 

     snail.getSprite().setFlip(true, true); 
     snail.getBounds().x += snailSpeed * delta; 

     if(snail.getBounds().x > 2020)snail.getBounds().x = -100; 
    } 

    if(Gdx.input.isKeyPressed(Keys.UP) || Gdx.input.isKeyPressed(Keys.W)){ 

     if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){ 
      snailBoost++; 
      snail.getBounds().y -= (snailSpeed + 100) * delta; 
     } 

     snail.getBounds().y -= snailSpeed * delta; 

     if(snail.getBounds().y < -100)snail.getBounds().y = 1080; 
    } 

    if(Gdx.input.isKeyPressed(Keys.DOWN) || Gdx.input.isKeyPressed(Keys.S)){ 

     if(Gdx.input.isKeyPressed(Keys.SPACE) && snailBoost < 20){ 
      snailBoost++; 
      snail.getBounds().y += (snailSpeed + 100) * delta; 
     } 

     snail.getBounds().y += snailSpeed * delta; 

     if(snail.getBounds().y > 1080)snail.getBounds().y = -100; 
    } 

对不起乱码。 :P 还是游戏开发的新手。

回答

2

便宜的键盘共享按键的控制线,所以一些按键组合将无法正确注册,并且试图一次按超过3-4个按键将不会发生任何事情。

要么购买更昂贵的键盘,要么选择键使其工作(如着名的WASD,你已经注意到了作品)。与代码无关。

+0

好的,谢谢你的回答。 –

相关问题