当前位置: 首页 > 知识库问答 >
问题:

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

黎玺
2023-03-14

我想通过单击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.gamehero.heroBody.getLinearVelester(). y限制高度

共有1个答案

尹庆
2023-03-14

为类和调用实现InputListener

Gdx.input.setInputProcessor(thatClass);

然后覆盖that类中的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来降低速度。

 类似资料:
  • 所以,在学校的一个项目中,我一直在尝试建立一个跳跃机制。然而,我一直面临的问题是,玩家可以只是四处漂浮,而不是在达到某个跳跃高度后摔倒。 我尝试过很多东西,包括按下up键时的正常想法,设置跳转等于true,然后在actionPerform方法中,将yVelester设置为-4。但是,当单击跳转键时,我记录了当时的yPotions,当当前的yPotions小于原始位置-50时,我将yVelSpeed

  • 我让敌人随机移动并看着玩家,现在我想让敌人射击玩家,我不知道为什么,但射击完全随机,正如你在下面的gif中看到的(你按左ctrl射击)。 无论如何,这是玩家类: 这是我的敌人类: 这是我的子弹课: 如果你想测试代码,我已经删除了不必要的东西:< br > https://pastebin.com/HT93hUzt 您可以在此处下载替换图像来测试代码(记得更改图像加载字符串!): https://w

  • 我正在做一个RPG游戏,但是,我现在有一个错误。玩家的角色可以在所有四个基本方向上移动,但如果你向右、向上或向下移动,玩家就会被卡住。 此外,这个错误似乎有一定的逻辑性: 如果向下移动,角色将卡在向下移动的循环中 除非按下向上箭头,否则玩家将开始一个新的向上无限循环 除非按下向右箭头,否则玩家将开始一个新的向右无限循环 所以权利似乎优先于上,而上优先于下。 奇怪的是,向左移动工作得很完美,即使当角

  • 出于某种原因,我的玩家能够遍历不应该遍历的对象。我使用的是二维布尔数组,如果玩家左边的位置在网格中为真,那么他就不应该移动,右边也是如此。我知道碰撞处理程序正在工作,因为它所做的只是检查左边或右边是否有东西,如果有,它会写player.setCanMove左或右为假,代码在以前的版本中工作。当玩家左边或右边有东西时,我会打印一些东西,这样我就知道碰撞处理程序正在做它的工作。我只是不明白这里发生的是

  • 好的,我有一个手臂和旋转关节相连的球员。我想要的是手臂身体向接触点旋转。 我试图计算接触点与身体的角度,并用 但它在更新方法上表现得很奇怪。它绕着手臂身体的中心旋转,而不是绕着旋转关节连接的身体旋转。 我也在考虑一个关节,但我不知道哪个能像我想要的那样工作。 我将不胜感激任何帮助!

  • 我在libgdx中使用tiled。我正在做一个自上而下的rpg,类似于《最终幻想1》、《2》等等。 我使用setX(getX()速度)。x*delta);和setY(getY()速度)。y*delta);在地图上移动玩家。我怎样才能让玩家一块一块地移动呢。我该如何检查玩家在哪个磁贴中?谁能帮帮我吗。谢谢你。 我发现: } 来自:libGDX:如何实现基于平滑瓷砖/网格的游戏角色移动? 但是我似乎可