0

我正在使用glutkeyboardfuncand控制屏幕上的精灵keyDown

例如。当我实现以下代码时,精灵成功跳起来:

 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某个时间段内,或者只像按下一次一样?谢谢。

编辑我不太明白这个问题如何值得一票否决。你甚至读过它吗?

4

1 回答 1

0

可以用一个变量来表示key之前的状态,然后看看有没有变化。

例如:

//Initialise a bool called keyWasDown to false

if (keyDown[119]){
    if (!keyWasDown){
        //Do jumping code
        keyWasDown = true;
    }
else {
    keyWasDown = false;
}
于 2013-04-06T17:03:46.300 回答