0

私は現在、C と OpenGL の素早い学習体験として、ブレイクアウトのバージョンをコーディングしています。

パドルの移動に問題があります。左矢印が押されるとパドルの x 値から 1 が減算され、右矢印が押されると x 値に 1 が加算されるように、キーボード コールバックを設定しました。

これを念頭に置いて、どちらのキーを押してもパドルの動きが非常に遅くなります。たとえば、x 値を 10 に変更する量を増やすことで、これを変更できます。これを行うと、一度に 10 ずつジャンプするため、パドルが画面全体でカクカクしているように見えます。もちろん、画面に沿ってより速く移動しますが、滑らかに見えません.

OSX でのウィンドウ処理に GLUT を使用しています。

これをスピードアップしてスムーズに見せる方法はありますか?

4

2 に答える 2

2

ゲームでよくあるのは、キーボード配列です。したがって、一度に複数のボタンを押すこともできます。

キーの状態を保持する配列があります (押されたときに 1 を入れ、離されたときに 0 を設定します)。また、入力から直接ではなく、配列から情報を取得して、各フレームでゲームを処理します。

于 2011-03-23T20:15:07.350 に答える
0

これが私のプロジェクトの1つからのいくつかのコードです:

bool keyDown[256];

...

//Called when a key is pressed
void handleKeypress(unsigned char key, int x, int y) {  
    keyDown[key] = true;
}

void handleKeyUp(unsigned char key, int x, int y){
    keyDown[key] = false;
}

これは基本的に各キーの状態の配列を保持するため、毎回確認することができます。そうすれば、それほど頻繁に着信するコールバックに依存する必要がなくなります。

于 2011-03-23T20:20:11.357 に答える