我的播放器在我不需要的时候跳了两次。这是来自播放类的代码,当用户按下空格键时,播放器会跳转,但再次按下空格键时会在空中跳跃一次,我试图检查播放器是否在地面上并给出不管玩家是否在地面上都为假值,因此玩家不会使用此代码跳跃

当我删除第二条if语句时,播放器跳到空中一次,再次按下时从空中跳出。

这是我的mycontactListener类,用于检查播放器是否在地面上。由于某些原因,它不计算播放器在地面上的numFootContacts。

如何阻止玩家跳两次或在空中跳?

最佳答案

最好检查y速度值是否为0。实际上,仅当您不跳跃或下降时,您才可以跳跃,我的意思是仅当您站立时才可以。

这是代码:

if(MyInput.isPressed(MyInput.SPACE) &&
    player.getBody().getLinearVelocity().y==0)
    player.getBody().applyForceToCenter(0, 150, true);

10-06 14:33