In una GUI, l'input deve essere gestito quando il pulsante viene premuto o rilasciato?


12

Nel sistema di menu per il nostro gioco (selezione di livelli, opzioni, ecc.), Il giocatore preme il pulsante a sul gamepad per passare alla schermata successiva. Ho codificato il sistema di menu per attendere fino a quando il pulsante non viene rilasciato prima di intraprendere qualsiasi azione (ovvero, visualizzare la schermata successiva). Alcuni recenti feedback del playtest hanno suggerito di farlo in modo opposto: agire non appena viene premuto il pulsante. Sono curioso, qual è il modo standard in cui viene gestito e fa persino la differenza?

Risposte:


32

In un gioco controllato da un gamepad, in cui gli ingressi di controllo cambiano direttamente il focus della GUI da un pulsante della GUI a un altro, quei pulsanti della GUI dovrebbero essere attivati ​​quando si preme un pulsante del controller .

In un gioco controllato da un mouse (o se si utilizza un gamepad per spostare un cursore del mouse virtuale sullo schermo), i pulsanti su schermo devono essere attivati ​​quando il pulsante mouse / controller viene rilasciato sullo stesso pulsante in cui si trovava premuto . (Se la pressione si è verificata su un pulsante della GUI e il mouse è stato quindi spostato e rilasciato su un pulsante della GUI diverso, nessuno dei due pulsanti della GUI è attivato)

La ragione di ciò è che le abilità di controllo del mouse delle persone sono molto variabili e spesso le persone hanno un po 'di problemi a posizionare il cursore esattamente dove lo vogliono, o addirittura a dire con precisione quale pulsante della GUI si sta spostando al momento. La teoria è che le persone possono premere e tenere premuto il pulsante del mouse per evidenziare il pulsante GUI, e se quel pulsante GUI non era quello che intendevano utilizzare, possono spostare il cursore lontano da esso prima di rilasciare il pulsante del mouse in ordine per evitare di premerlo.

Ma se il tuo gioco è controllato da un gamepad, allora devi assolutamente agire quando viene premuto il pulsante gamepad, non quando viene rilasciato.

Modifica, cinque anni dopo:

Da quando è stata pubblicata questa risposta, è emerso un nuovo standard per la gestione dei cursori in stile mouse controllati dai gamepad.

Nella risposta sopra, ho suggerito che questi dovrebbero essere implementati per funzionare esattamente come i cursori che sono effettivamente controllati dai topi; evidenziare al passaggio del mouse verso il basso, attivare al passaggio del mouse se il cursore si trova ancora sullo stesso elemento della GUI.

Ma ora, i cursori controllati dal gamepad in genere attivano un'azione della GUI dopo che il pulsante del gamepad è stato tenuto premuto per un periodo di tempo(in genere circa un secondo). Se seguirai questo sistema, avrai bisogno di un indicatore sullo schermo che mostri per quanto tempo ci vorrà l'attivazione (spesso questo è un piccolo anello attorno al cursore stesso, che si riempie man mano che ti avvicini all'attivazione del al passaggio del mouse) e devi comunque evidenziare l'elemento che verrà attivato, durante il tempo in cui il pulsante viene tenuto premuto (e potrebbe essere una buona idea farlo ogni volta che il mouse si trova sopra un elemento, anche se il pulsante non viene tenuto premuto). Mentre si tiene premuto il pulsante, il cursore non dovrebbe poter essere spostato, al fine di evitare attivazioni accidentali di elementi della GUI se il cursore viene spinto all'ultimo momento.

Il vantaggio di questo sistema è che consente a un utente il cui cursore di tipo mouse si trova sul punto sbagliato per evitare di attivare quell'elemento semplicemente rilasciando il pulsante in anticipo; lo stile del mouse "allontanarsi da esso prima di rilasciarlo" è meno naturale da realizzare su un gamepad che con un mouse, e questo approccio consente all'utente di un gamepad di interrompere un clic indesiderato molto più facilmente.

Stiamo persino iniziando a vedere alcuni giochi che sperimentano questo modello di interazione con il cursore anche quando il loro cursore viene spostato da un mouse reale. No Man's Sky fa questo, ad esempio. Sarà interessante vedere se questo approccio alla gestione dell'interazione mouse-cursore diventerà sempre più comune e previsto nei prossimi anni.


10
+1. L'azione deve essere eseguita con il rilascio del mouse, non con il mouse verso il basso. Tuttavia, affinché ciò sia efficace è importante che l'elemento GUI stesso cambi lo stato visivo sull'evento mouse-down.
Kylotan,

+1 per tornare ad aggiornare la domanda dopo 5 anni per mantenerla pertinente.
lozzajp,

Ogni volta che qualcuno vota o commenta una delle mie vecchie risposte, la rileggo per assicurarmi che sia ancora aggiornato. :)
Trevor Powell il

1

Agirei non appena si preme il tasto.

Il miglior esempio di azione avvenuta dopo il rilascio della chiave è stato in Starcraft: Broodwar. Quando premevo i tasti molto rapidamente, premevo spesso il tasto successivo prima di rilasciare completamente quello precedente che portava ad ignorare alcuni comandi. (1A Click, 2A Click, 3A Click - il 2 verrebbe ignorato)

Questo è stato cambiato in Warcraft III e il gioco mi è sembrato molto più reattivo di conseguenza e non ho mai avuto i problemi del "gruppo di controllo appiccicoso" di Broodwar.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.