Domanda

Sto lavorando sullo sviluppo di sistemi di menu per un test molto semplice pong che ho fatto, e ho incontrato qualche problema con i thumbsticks. Alcuni esempi che ho visto mostrano il codice per spostarsi in alto e opzioni su uno schermo di menu come semplicemente verso il basso:

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

Mentre questo funziona in teoria, questo test è eseguito ogni frame (nella chiamata Update(), apparentemente), controllando lo stato del controller circa 60 volte al secondo. Dal momento che l'utente medio si terrà la levetta in su per un secondo trimestre probabilmente, almeno, il risultato è che un rubinetto su cicli di controllo thumbstick attraverso l'intero menu quasi istantaneamente.

I probabilmente potrebbe implementare una sorta di sistema timer complicato, in cui esso controlla per quanto tempo dopo l'ultima modifica voce di menu e per quanto tempo la levetta è stato sostenuto, ma nessuno dei campioni sul web ho trovato impiego come un complicato distribuzione. Mi sto perdendo qualcosa?

Modifica Andrew ha chiesto nel commento qui sotto per i collegamenti a questi tutorial ho trovato:

  • Questo si usa if (controller.isButtonPressed(Buttons.LeftThumbstickUp)) ma è la stessa idea.
    http://create.msdn.com/en-US/education/catalog / campione / game_state_management
  • mi rendo conto questa è XNA 2.0 (sto lavorando con 4.0), ma i resti principio
    http://www.sgtconker.com/2010/08/ nick-gravelyns-alieni-aggressori dimostrativi /
  • Inoltre, di Chad Carter "Microsoft XNA Game Studio 3.0 Unleashed" libro, a pagina 530, spettacoli codice simile. I suoi controlli di sistema lo stato precedente del gamepad, quindi il suo sistema non scorreranno istantaneamente attraverso diverse opzioni, ma anche non consente di di scorrimento a tutti - ogni volta che si desidera spostare una voce di menu, si deve spostare sul retro levetta al centro e spingerlo indietro di nuovo. Sto cercando un comportamento più simile a quando si tiene premuto un tasto sulla tastiera:. Uno appare la lettera, un leggero ritardo, e poi inizia a ripetere la lettera a un ritmo misurato
È stato utile?

Soluzione

aver collegato diversi tutorial di successo che dimostrano questa tecnica. Che cosa è esattamente il problema qui? La premessa fondamentale è, come si stato, se basta controllare / sposta ogni fotogramma il risultato sarà incomprensibile per l'utente.

L'opzione più semplice è quello di mantenere lo "stato precedente" del controllore. E se "down" era già stato premuto l'ultimo fotogramma, quindi è ritornello si muova l'opzione di menu. Questo fa in modo che un'azione utente per giù viene elaborato una sola volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top