Soll in einer GUI die Eingabe behandelt werden, wenn die Taste gedrückt oder losgelassen wird?

12

Im Menüsystem für unser Spiel (Auswählen von Ebenen, Optionen usw.) drückt der Spieler die a-Taste auf dem Gamepad, um zum nächsten Bildschirm zu gelangen. Ich habe das Menüsystem so programmiert, dass gewartet wird, bis die Taste losgelassen wird, bevor eine Aktion ausgeführt wird (dh der nächste Bildschirm angezeigt wird). In den letzten Testberichten wurde das Gegenteil vorgeschlagen: Ergreifen Sie Maßnahmen, sobald der Knopf gedrückt wird. Ich bin neugierig, wie das normalerweise gehandhabt wird und macht es überhaupt einen Unterschied?

Venesectrix
quelle

Antworten:

32

In einem Spiel, das von einem Gamepad gesteuert wird und bei dem die Steuereingaben den GUI-Fokus direkt von einer GUI-Taste auf eine andere ändern, sollten diese GUI-Tasten aktiviert werden, wenn eine Controller-Taste gedrückt wird .

In einem Spiel, das von einer Maus gesteuert wird (oder wenn ein Gamepad verwendet wird, um einen virtuellen Mauszeiger über den Bildschirm zu bewegen), sollten Bildschirmtasten aktiviert werden, wenn die Maus- / Controllertaste über derselben Taste losgelassen wird, auf der sie sich befand gedrückt . (Wenn das Drücken über eine GUI-Taste erfolgte und die Maus dann bewegt und über eine andere GUI-Taste losgelassen wurde, ist keine der GUI-Tasten aktiviert.)

Der Grund dafür ist, dass die Maussteuerungsfähigkeiten der Benutzer sehr unterschiedlich sind und die Benutzer häufig Probleme haben, den Cursor genau dort zu positionieren, wo sie ihn möchten, oder sogar genau zu sagen, über welche GUI-Schaltfläche sie gerade schweben. Die Theorie besagt, dass Benutzer die Maustaste drücken und gedrückt halten können, um die GUI-Schaltfläche hervorzuheben. Wenn diese GUI-Schaltfläche nicht diejenige war, die sie verwenden wollten, können Sie den Cursor von ihr wegbewegen, bevor Sie die Maustaste loslassen um ein Drücken zu vermeiden.

Wenn Ihr Spiel jedoch von einem Gamepad gesteuert wird, möchten Sie unbedingt Maßnahmen ergreifen, wenn die Gamepad-Taste gedrückt wird, und nicht, wenn sie losgelassen wird.

Edit, fünf Jahre später:

In der Zeit, seitdem diese Antwort veröffentlicht wurde, hat sich ein neuer Standard für den Umgang mit Mauszeigern herausgebildet, die von Gamepads gesteuert werden.

In der obigen Antwort schlug ich vor, dass diese so implementiert werden sollten, dass sie genau wie Cursor funktionieren, die tatsächlich von Mäusen gesteuert werden. Bei gedrückter Maustaste markieren, bei gedrückter Maustaste aktivieren, wenn sich der Cursor immer noch über demselben GUI-Element befindet.

Jetzt aktivieren gamepad-gesteuerte Cursor jedoch in der Regel eine GUI-Aktion, nachdem die Gamepad-Taste für einen bestimmten Zeitraum gedrückt wurde(normalerweise ungefähr eine Sekunde). Wenn Sie diesem System folgen möchten, benötigen Sie eine Bildschirmanzeige, die angibt, wie lange es dauert, bis die Aktivierung erfolgt (häufig ist dies ein kleiner Ring um den Cursor selbst, der sich füllt, wenn Sie sich der Aktivierung des näher kommen Wenn Sie den Mauszeiger über die Schaltfläche halten, müssen Sie das Element markieren, das aktiviert werden soll, während Sie die Schaltfläche gedrückt halten wenn die Taste nicht gedrückt wird). Während die Taste gedrückt gehalten wird, sollte sich der Cursor nicht bewegen lassen, um eine versehentliche Aktivierung von GUI-Elementen zu vermeiden, wenn der Cursor im letzten Moment angerempelt wird.

Der Vorteil dieses Systems besteht darin, dass ein Benutzer, dessen Mauszeiger sich über der falschen Stelle befindet, die Aktivierung dieses Elements vermeiden kann, indem er nur die Taste vorzeitig loslässt. Die Art der Maus, sich von ihr zu entfernen, bevor Sie sie freigeben, ist auf einem Gamepad weniger natürlich als mit einer Maus, und dieser Ansatz ermöglicht es einem Gamepad-Benutzer, einen unerwünschten Klick viel einfacher abzubrechen.

Es gibt sogar einige Spiele, die mit diesem Cursor-Interaktionsmodell experimentieren, selbst wenn der Cursor mit einer echten Maus bewegt wird. No Man's Sky tut dies als ein Beispiel. Es wird interessant sein zu sehen, ob dieser Ansatz zur Handhabung der Maus-Cursor-Interaktion in den kommenden Jahren immer häufiger und erwarteter wird.

Trevor Powell
quelle
10
+1. Die Aktion sollte beim Loslassen der Maus und nicht beim Drücken der Maustaste ausgeführt werden. Damit dies jedoch effektiv ist, ist es wichtig, dass das GUI-Element selbst den visuellen Status beim Mouse-Down-Ereignis ändert.
Kylotan
+1 für das Zurückkommen, um die Frage 5 Jahre später zu aktualisieren, um sie relevant zu halten.
Mozzajp
Jedes Mal, wenn jemand eine meiner alten Antworten aktualisiert oder kommentiert, lese ich sie erneut, um sicherzustellen, dass sie immer noch aktuell sind. :)
Trevor Powell
1

Ich würde sofort Maßnahmen ergreifen, wenn die Taste gedrückt wird.

Das beste Beispiel, in dem die Aktion nach dem Loslassen des Schlüssels stattfand, war Starcraft: Broodwar. Wenn ich die Tasten sehr schnell drückte, drückte ich oft die nächste Taste, bevor ich die vorherige vollständig losließ, was dazu führte, dass einige Befehle ignoriert wurden. (1A Klick, 2A Klick, 3A Klick - die 2 wird ignoriert)

Dies wurde in Warcraft III geändert und das Spiel reagierte daher viel schneller auf mich und ich hatte nie die Probleme mit der "klebrigen Kontrollgruppe" von Broodwar.

RoboKozo
quelle