Java LibGdx-Box2d-跳跃

Java LibGdx-Box2d-跳跃,java,android,libgdx,box2d,Java,Android,Libgdx,Box2d,我想创造一个像扑翼鸟一样的游戏。我想让玩家在屏幕上连续跳跃。我创建了这个代码,它不像一只扑翼鸟那样跳跃 代码: 问题是当用户快速点击屏幕时,玩家就像火箭一样被射中。同样,当运动员摔倒时,跳得更低。我怎样才能解决这个问题,并始终获得相同的跳跃强度 我的解决方案: jumpTimer += delta; if(Gdx.input.justTouched()) { if (jumpTimer > jumpTime) { body.se

我想创造一个像扑翼鸟一样的游戏。我想让玩家在屏幕上连续跳跃。我创建了这个代码,它不像一只扑翼鸟那样跳跃

代码:

问题是当用户快速点击屏幕时,玩家就像火箭一样被射中。同样,当运动员摔倒时,跳得更低。我怎样才能解决这个问题,并始终获得相同的跳跃强度

我的解决方案:

    jumpTimer += delta;

    if(Gdx.input.justTouched()) {

        if (jumpTimer > jumpTime) {

            body.setLinearVelocity(body.getLinearVelocity().x, 0);
            body.applyForceToCenter(0, jump * delta, true);
        }

        jumpTimer = 0;
    }

可以使用几种方法来实现这种效果

  • 就像Mohammad在评论中提到的那样,可以将y速度钳制为最大值
  • 使播放器每
    x
    次只能轻触屏幕一次
  • 玩家上升的速度越快,敲击产生的上升力越小
  • 完全不允许以一定的速度轻敲
  • 结合这些,并调整它,直到你满意的结果

在两个适当的值之间夹紧增量,这样它就不会太高或太低。跳跃时,在施加力之前,将身体在y轴上的速度设置为0。
    jumpTimer += delta;

    if(Gdx.input.justTouched()) {

        if (jumpTimer > jumpTime) {

            body.setLinearVelocity(body.getLinearVelocity().x, 0);
            body.applyForceToCenter(0, jump * delta, true);
        }

        jumpTimer = 0;
    }