2010-12-13 9 views
0

私が作った非常に簡単なポンテストのメニューシステムの開発に取り組んでいて、親指で何か問題が起きました。チェック、これは理論的には動作しますが、このテストは(表向きは、Update()コールで)すべてのフレームを実行しているGUIのサムネイルコントロールがメニューの選択肢が速すぎる

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

:私が見てきたいくつかの例は、単にメニュー画面上に移動するためのコードとダウンオプションを表示しますコントローラーの状態は約60回/秒です。平均的なユーザーは少なくとも1/4秒ほど親指を持ち上げるので、結果的にコントローラーの親指でタップアップするとメニュー全体が瞬時に切り替わります。

最後にメニュー項目を変更してからどれくらいの時間が経過しているかを確認する複雑なタイマーシステムを実装している可能性があります。複雑なタイミングシステム。何か不足していますか?

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

  • をこの1つはif (controller.isButtonPressed(Buttons.LeftThumbstickUp))を使用していますが、それは同じ考えです。
    http://create.msdn.com/en-US/education/catalog/sample/game_state_management
  • 私はこの1つは(私は4.0で働いている)XNA 2.0で実現するが、原理は、また、ページ530のチャド・カーターの「マイクロソフトXNAゲームスタジオ3.0アンリーシュド」の本、ショー
    http://www.sgtconker.com/2010/08/nick-gravelyns-alien-aggressors-tutorial/
  • のまま類似のコード。彼のシステムは以前のゲームパッドの状態をチェックするので、彼のシステムはいくつかのオプションを使って即座にスクロールしませんが、スクロールも全くありません。メニューオプションを上に移動するたびに、中心に戻って押し戻し、再び押し戻します。私はあなたのキーボードのキーを押したままにしたときと同じように行動を探しています:1文字が現れ、わずかな遅れがあり、測定されたペースで文字が繰り返され始めます。
+1

これを行うこれらのチュートリアルの一部をリンクしておけば、おそらく役に立ちますか? –

答えて

1

このテクニックを示す成功したチュートリアルをいくつかリンクしました。ここではどういう疑問がありますか?基本的な前提は、すべてのフレームをチェック/移動するだけで結果が理解できない場合は、あなたが述べたとおりです。

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

+0

問題は**スクロール**です。たとえば、ユーザーが単に親指をつかんで複数のオプションをスクロールできるようにするにはどうすればいいですか? Chad Carterのシステムを使用すると、メニュー上の1つのオプションに移動するだけです。しかし、ユーザーが3つのオプションを上げたい場合はどうすればよいでしょうか?彼は親指を3回別々に押し上げなければならない。 Xboxダッシュボードにはこの機能が示されています。それはあなたが人間が読めるペースで、すべてのメニューをスクロールするために親指を保持することができます。 –

+1

それがあなたが望む振る舞いであれば、スクロールするタイミングを決めるタイマーメカニズムを実装する必要があります。ステートはスクロールが最後に開始された時刻を記録しておかなければなりません。一定の時間が経過すると再びスクロールします。 –

関連する問題