2016-02-14 55 views
0

我想在LIBGDX中點擊按鈕來實現跳轉。一切都很順利,但點擊按鈕不斷,球員不斷高漲。如果我沒有釋放我的按鈕超出屏幕高度。所以,我希望玩家在每次點擊按鈕時只跳一定高度,儘管點擊按鈕不斷,我希望玩家只能走到一定的高度,不要超出屏幕。 這裏是我的代碼,讓玩家跳轉到LIBGDX的特定高度

 for (int i = 0; i < 5; i++) { 
      if (buttonup.isPressed()) { 
        if (Gdx.input.isTouched(i)) { 
         gamehero.heroBody.setLinearVelocity(0, 1f); 
         Gdx.app.log("up is presd", ""); 
        } 
       } 
     if (buttonright.isPressed()) { 
       if (Gdx.input.isTouched(i)) { 


        gamehero.heroBody.setLinearVelocity(1.2f, 0); 
       } 
      } 
     } 

上執行該代碼,遊戲作品就像笨鳥先飛。但我只想達到一定的高度。我已經嘗試了各種方法,並參考this堆棧的答案太多,但沒有幫助我累了使用this.gamehero.heroBody.getLinearVelocity()。y> = -1限制高度,但沒有奏效。請幫忙 。在此先感謝

回答

0

實現InputListener一類,並呼籲:

Gdx.input.setInputProcessor(thatClass); 

thatClass這樣便覆蓋keyUp

@Override 
    public boolean keyUp (int keycode) { 
     if (keycode == Keys.SPACE) { 
      //code that make your bird jump 
     } 
    } 

這會讓你跳碼只運行一次。如果您不想雙跳,請添加一個布爾成員alreadyJumping,並在跳轉開始時將其設置爲true,並在跳轉結束時將其設置爲false。

@Override 
     public boolean keyUp (int keycode) { 
      if (keycode == Keys.SPACE && !alreadyJumping) { 
       alreadyJumping = true; 
       //code that make your bird jump 
      } 
     } 

如果你希望你跳慢下來,你人品秋季減少你的速度根據deltaTime當你渲染你的遊戲。

+0

它不能按預期工作,因爲玩家正在向上移動[僅在第一次按鈕點擊時,下一次點擊沒有任何反應,但每次點擊按鈕時甚至當按鈕被按下時我都想向上移動不斷地它必須只有一定的高度@gaRos – Anusha