0

私は自分が行った非常に簡単なポンテスト用のメニューシステムの開発に取り組んでおり、サムスティックで問題が発生しました。私が見たいくつかの例は、メニュー画面のオプションを上下に移動するコードを次のように示しています。

if (controller.Thumbsticks.Left.Y > 0.5f) MenuUp();

これは理論的には機能しますが、このテストはフレームごとに実行され(Update()表面上は呼び出し中)、コントローラーの状態を1秒間に約60回チェックします。平均的なユーザーは少なくとも1/4秒間サムスティックを押し続けるため、コントローラーのサムスティックをタップすると、メニュー全体がほぼ瞬時に循環します。

最後のメニュー項目が変更されてからどれくらいの時間、サムスティックが押されているかをチェックする、ある種の複雑なタイマーシステムを実装することもできますが、私が見つけたWeb上のサンプルはどれもそのような複雑なタイミングシステムを使用していません。私は何かが足りないのですか?

編集:アンドリューは、私が見つけたこれらのチュートリアルへのリンクを以下のコメントで尋ねました:

  • これは使用しますif (controller.isButtonPressed(Buttons.LeftThumbstickUp))が、同じ考えです。
    http://create.msdn.com/en-US/education/catalog/sample/game_state_management
  • これはXNA2.0(4.0で作業しています)ですが、原則はそのままです
    http://www.sgtconker.com/2010/08/nick-gravelyns-alien-aggressors-tutorial/
  • また、ChadCarterの「MicrosoftXNAGame Studio 3.0 Unleashed」(530ページ)にも同様のコードが示されています。彼のシステムは以前のゲームパッドの状態をチェックするため、彼のシステムはいくつかのオプションを即座にスクロールしませんが、まったくスクロールすることもできません-メニューオプションを上に移動するたびに、サムスティックを後ろに移動する必要があります中央に配置して、もう一度押し上げます。キーボードのキーを押したままにしたときのような動作を探しています。1つの文字が表示され、わずかに遅れてから、測定されたペースで文字が繰り返され始めます。
4

1 に答える 1

1

この手法を示すいくつかの成功したチュートリアルをリンクしました。ここでの質問は正確には何ですか?基本的な前提は、あなたが述べているように、すべてのフレームをチェック/移動するだけでは、結果はユーザーには理解できません。

最も簡単なオプションは、コントローラーの「以前の状態」を維持することです。また、最後のフレームで「下」がすでに押されている場合は、メニューオプションの移動を控えます。これにより、ダウンに対する 1 つのユーザー アクションが 1 回だけ処理されるようになります。

于 2010-12-13T16:51:55.853 に答える