-1

C++ で OpenGL を使用して 2D プログラムを開発しています。Glutキーボード機能を使用しています。その問題は、一度に 1 つのキーにしか応答できないことです。

例: UP と RIGHT を同時に押すと、思ったように斜めに動かず、上か右に動きます。

私のスイッチステートメントは次のようになります。

case GLUT_KEY_UP:     

    f.Move(UP);
    break;

case GLUT_KEY_DOWN: 
    f.Move(DOWN);
    break;

このMove()関数は、オブジェクトの (x,y) 値を加算または減算します。

私の取り扱い(switch文)に問題がありますか?それとも、Glut の kb 機能が制限されているだけですか?

これを回避する他の方法はありますか?問題がライブラリ自体にあり、より良い解決策が別の場所にある場合、それを理解しようとして時間を無駄にしたくありません。

4

1 に答える 1

3

アイデアは、キーが押された瞬間に何かをするのではなく、キーの状態を追跡することです。

他の誰かがもっとうまく説明できると思いますが、基本的には、現在、キーに対応する方向にすぐに移動するようにコンピューターに指示しているようです (たとえば、10 ピクセル)。よくよく考えてみると、斜めに移動する方法はありません。コンピュータが認識している概念でさえないからです。

物理について考えてみたい。速度、力 (覚えておいてください、加速度は速度の時間微分であり、速度は位置の時間微分です)。次に、ハードコードされた 4 つの個別のアクションを実行するのではなく、コンピューターに任意の方向の知識を与える方法のスキームを考え出すことができます。

于 2013-10-16T05:11:24.013 に答える