il controllo dei cicli thumbstick GUI le opzioni di menu troppo veloce
-
09-10-2019 - |
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
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.