Java 如何阻止运动员在空中跳跃两次?

Java 如何阻止运动员在空中跳跃两次?,java,controller,libgdx,box2d,Java,Controller,Libgdx,Box2d,我的球员在空中跳了两次,这是我不想要的。这是play类中的代码,当用户按下空格键时,玩家会跳跃,但当再次按下空格键时,它会在空中再跳一次。我试图检查玩家是否在地面上,它会给出错误的值,无论玩家是否在地面上,因此玩家不会使用此代码跳跃 当我删除第二个if语句时,玩家在空中跳一次,当再次按下时从空中跳 这是我的mycontactListener类,它检查玩家是否在地面上。出于某种原因,它不计算玩家在地面上的numFootContacts 如何阻止玩家在空中跳跃两次或两次?最好检查y速度值是否为0。事

我的球员在空中跳了两次,这是我不想要的。这是play类中的代码,当用户按下空格键时,玩家会跳跃,但当再次按下空格键时,它会在空中再跳一次。我试图检查玩家是否在地面上,它会给出错误的值,无论玩家是否在地面上,因此玩家不会使用此代码跳跃

当我删除第二个if语句时,玩家在空中跳一次,当再次按下时从空中跳

这是我的mycontactListener类,它检查玩家是否在地面上。出于某种原因,它不计算玩家在地面上的numFootContacts


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

最好检查y速度值是否为0。事实上,只有当你不跳或不摔的时候,你才能跳,我的意思是只有当你站着的时候

代码如下:

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

最好检查y速度值是否为0。事实上,只有当你不跳或不摔的时候,你才能跳,我的意思是只有当你站着的时候

代码如下:

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

你是否考虑添加一些调试到 iSpReleOnLoad()/Case>,当你认为它应该返回<代码> false < /代码>时,为什么它会返回<代码> true <代码>?当玩家在空中时,它会返回假,当玩家在地上时,它会返回假。我还没有调试它。默认情况下,当numFootContact为0时返回false。如果在您认为播放机不应该在地面上时返回true,则开始检查是否正确更新了
numFootContacts
。然后继续沿着面包屑的轨迹直到找到根本原因。调试是一项需要时间学习的技能。你在这里有一个很好的基础,但这需要练习,直到成为第二天性。一个好的生活准则是“在你看到程序的任何部分在所有情况下都做了正确的事情之前,不要假设程序的任何部分都是正确的。”祝你好运!在contactListener类中,它得到的是玩家和钻石的固定装置,而不是脚。我无法获得名为foot的第三场比赛。怎么弄到的?你需要脚吗?你能不能只使用玩家和钻石之间的联系?你是否考虑添加一些调试到<代码> ISPrSereOnLoad()/CUT>来解释为什么它返回“代码> true <代码>当你认为它应该返回<代码> false < /代码>?当玩家在空中时,它会返回假,当玩家在地上时,它会返回假。我还没有调试它。默认情况下,当numFootContact为0时返回false。如果在您认为播放机不应该在地面上时返回true,则开始检查是否正确更新了
numFootContacts
。然后继续沿着面包屑的轨迹直到找到根本原因。调试是一项需要时间学习的技能。你在这里有一个很好的基础,但这需要练习,直到成为第二天性。一个好的生活准则是“在你看到程序的任何部分在所有情况下都做了正确的事情之前,不要假设程序的任何部分都是正确的。”祝你好运!在contactListener类中,它得到的是玩家和钻石的固定装置,而不是脚。我无法获得名为foot的第三场比赛。怎么弄到的?你需要脚吗?你能不能不只是使用玩家和钻石之间的接触?