0

したがって、SlimDX での基本的な 2D ゲーム フレームワークは順調に進んでいます。私はカスタム スプライト オブジェクトを作成し、スプライトのレンダリングについて基本的な知識を持っています。今すぐ移動する必要があります。

古い C# ゲーム プログラミング ブックに基づいて、基本的なゲーム ループをセットアップしました。すべてのグラフィックス デバイスのビットとボブを設定し、スプライトを画面に描画したら、Game クラスに というメソッドを入力しますRun()。これには次の内容があります。

public void Run()
{

    while( this.Created )
    {
        // Process one frame of the game
        ProcessFrame();
        Render();
        // Handle all events
        Application.DoEvents();
    }
}

ProcessFrame()イベントに応答して、すべてのゲームロジックが含まれているはずです。キー押下を検出するための単純なイベント ハンドラ (のオーバーライドに基づくOnKeyDown) を設定していますが、メソッドでキー押下に対する応答を処理できるようにキー押下を収集する方法を考えていますProcessFrame()

このテーマに関するいくつかの初期調査では、HashSet<Keys>. 今までやったことがないので、どうしたらいいのかわからない。

これを行うにはおそらく多くの方法があるので、そこに飛び込む前に人々が何を推奨するかを見てみたいと思いました.

よろしくお願いします。

4

1 に答える 1

3

入力を手動でキャプチャする必要はないと思います。これは通常、直接入力キーボード クラスによって処理されます。個人的にはまだSlimDXを使用したことはありませんが、これはDirectXのラッパーであるため(私が手を出したことがあります)、変数を初期化してキーボードへの参照を保持し、変更をポーリングできるようにする必要があります。それらの変更に基づいて行動します。

http://slimdx.org/docs/#T_SlimDX_DirectInput_Keyboard

次のようなコードを作成するように

if (myKeyboard.IsKeyDown(Keys.Escape)) { ProgramStatus = GameState.Title; }

私の参照変数が myKeyboard と呼ばれると仮定します。

編集:使用している特定のライブラリによっては、現在および以前のキーボードの状態を保存することが有益である可能性があることにも言及するかもしれません。これは、プログラムが多くのキーストロークではなく 1 つのキーストロークだけを使用するようにしたい場合に非常に便利です。

私が思い出したように、XNAにはコントローラー用のKEYDOWNメソッドがあり、ボタンが押されているかどうかをテストするのに役立ちます。ボタンが押されるたびに入力を取り込む必要がある場合は、両方をキャプチャします。IE ライブラリに Keypress メソッドがある場合は、良いです。KEYDOWN のみをキャプチャする場合は、現在と以前のものをキャプチャする必要がある場合があります。

 if (myMouse.LeftButton == ButtonState.Pressed && oldMouse.LeftButton == ButtonState.Released) 

于 2012-08-26T20:54:27.020 に答える