使用keyDown Glut C ++模拟跳转不是100%

时间:2013-04-06 15:46:31

标签: c++ glut

我使用glutkeyboardfunckeyDown&#39}在屏幕上控制精灵。

EG。当我实现以下代码时,sprite成功跳转:

 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限制在某个特定的时间段内,或者只是按下它一次?感谢。

编辑我不太明白这个问题是如何值得投票的。你读过它吗?

1 个答案:

答案 0 :(得分:0)

您可以使用变量来表示键的先前状态,然后查看它是否已更改。

例如:

//Initialise a bool called keyWasDown to false

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