我使用glutkeyboardfunc
和keyDown
&#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
限制在某个特定的时间段内,或者只是按下它一次?感谢。
编辑我不太明白这个问题是如何值得投票的。你读过它吗?
答案 0 :(得分:0)
您可以使用变量来表示键的先前状态,然后查看它是否已更改。
例如:
//Initialise a bool called keyWasDown to false
if (keyDown[119]){
if (!keyWasDown){
//Do jumping code
keyWasDown = true;
}
else {
keyWasDown = false;
}