2011-12-29 17 views
0

私は、ポンのようなゲームのための単純な再利用可能なエンジンを作ろうとしています。私はタイミングと入力に問題があります。C#ゲームループと入力

たとえば、XNAゲームクラスを使用すると、更新メソッドは1秒あたり60回発生します。私がゼロから作るクラスでこれを行うには、タイマーや全く別のものを使用しますか?

入力に関する問題を明確にするために、どのようにKeyイベント(EX:Keyが押されている)が検出されますか?私はデリゲートと関係があると思いますが、私は本当に分かりません。

編集:私はXNAを使用していません。

+0

なぜ最初にXNAを使用していませんか?それを使用しない特定の理由はありますか? – smnbss

+0

私はMonoDevelopを使用しているので、クロスプラットフォームにすることができます。私は描画などのために外部ライブラリにプラットフォーム固有のコードを持っています。WindowsのみがXNAをサポートしています。 –

答えて

1

コールバックを持つタイマ、または完全にゲームループである2番目のスレッドを使用することもできます。私はJavaとC#の両方でそれをやった。ミリ秒の解像度はほとんどのゲームで十分ですので、私はタイマーを使う傾向があります。いくつかの(Java)サンプルコードを見たい場合は、私のrudimentary game engineをチェックしてください。ゲームの入力については...よく、サンプルコードをチェックしてください。イベント駆動型の入力を管理し、データをポーリングできるようにカプセル化します。 :P

また、MonoXNAを参照してください。 100%完成したわけではありませんが、2Dパーツと基本的なゲームの要素(ゲームのループ、入力など)はあります。

+0

リンクをありがとう...私はMonoXNAのGame.csクラスをスキップしました。物事の仕組みを知ることができました。私はソースをダウンロードし、すべてのことを理解するためにそれを読む(入力、タイミングなど)。私はあなたのゲームエンジンも見ていきます。リンクに感謝します。 –

+0

問題ありません。ホイールを再開発するのではなく、MonoXNAを直接使用することができます。 – GGulati

0

あなたが本当にしなければならないことは、アップデート方法でキーボード入力をチェックするだけです。または、updateメソッドで呼び出すことができるupdateInputメソッドを作成できます。

private void updateInput() 
{ 
    KeyboardState newState = Keyboard.GetState(); 

    if (newState.IsKeyDown(Keys.Enter)) 
    { 
     // code goes here 
    } 
} 

これは本質的にそれです!もちろん、これは基本的なアプローチであり、再利用可能なエンジンを作ることを検討しているので、GameComponentクラスを調べる必要があります。 XNAでは、さまざまなゲームプロジェクトを通じて再利用できるコンポーネントを作成します。

希望すると便利です。

+0

残念ながら、クロスプラットフォームではないためXNAを使用していません。私が理解しようとしたのは、XNAなどの既存のゲームライブラリなしでタイミングと入力を行う方法です。 –

+0

おっと!質問を間違って読んでください。 – slezakattack

関連する問題