让玩家在LIBGDX中跳转到特定高度

时间:2016-02-14 03:43:04

标签: button user-controls libgdx

我想在点击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);
                }
            }
        }

执行此代码时,游戏就像FLAPPY BIRD一样。但我想达到一定的高度。我已经尝试了各种方法,并提到了this堆栈答案,但没有任何帮助我累了使用this.gamehero.heroBody.getLinearVelocity()。y&gt; = -1来限制高度但是没有用。请帮忙 。提前致谢

1 个答案:

答案 0 :(得分:0)

为类实施InputListener并致电:

Gdx.input.setInputProcessor(thatClass);

然后在keyUp中覆盖thatClass,如下所示:

    @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的速度。