模拟跳跃与keyDown过剩c++不是100%

Simulating a Jump with keyDown Glut C++ not 100%

本文关键字:c++ 不是 100% 过剩 keyDown 跳跃 模拟      更新时间:2023-10-16

我正在使用glutkeyboardfunckeyDown控制屏幕上的精灵。

。当我执行以下代码时,精灵成功跳跃:

 if(keyDown[119]){//w key = up
    sprite_y +=40.0f;
    spriteT=spriteJ;
 }

当精灵在空中时,使用以下代码返回:

 if(sprite_y>0){ gravity-=10*delta; sprite_y+=gravity; }
 else{ gravity=0; }

我遇到的问题是,如果你把手指放在w键上,精灵会永远跳下去,并一直向上。

我理解这是因为我使用keyDown方法,所以我尝试了这个:

 if(keyDown[119]){//w key = up
    sprite_y +=40.0f;
    spriteT=spriteJ;
    keyDown[119]=0;//reset keyDown to keyUp
 }

但我没有运气……

是否有一种方法可以将keyDown限制在一定的时间段内,或者只按一次?谢谢。

编辑我不太明白为什么这个问题值得投票否决。你读过吗?

您可以使用一个变量来表示键的先前状态,然后查看它是否发生了变化。

例如:

//Initialise a bool called keyWasDown to false
if (keyDown[119]){
    if (!keyWasDown){
        //Do jumping code
        keyWasDown = true;
    }
else {
    keyWasDown = false;
}