0

glutkeyboardfuncと を使用して画面上のスプライトを制御しています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