Czy w interfejsie GUI należy obsługiwać wprowadzanie po naciśnięciu lub zwolnieniu przycisku?

12

W systemie menu naszej gry (wybór poziomów, opcji itp.) Gracz naciska przycisk na gamepadzie, aby przejść do następnego ekranu. Zakodowałem system menu, aby poczekał, aż przycisk zostanie zwolniony, zanim podejmie jakiekolwiek działanie (tj. Wyświetli następny ekran). Niektóre opinie z ostatnich testów sugerują, że robimy to w odwrotny sposób: podejmij działania natychmiast po naciśnięciu przycisku. Jestem ciekawy, jaki jest standardowy sposób, w jaki jest to obsługiwane i czy to w ogóle robi różnicę?

Venesectrix
źródło

Odpowiedzi:

32

W grze, która jest kontrolowana przez gamepad, gdzie wejścia sterujące bezpośrednio zmienić GUI ciężkości z jednego przycisku GUI do innego, te przyciski GUI powinien być aktywowany po naciśnięciu sterownik jest wciśnięty .

W grze kontrolowanej za pomocą myszy (lub gdy gamepad służy do poruszania wirtualnym kursorem myszy po ekranie), przyciski ekranowe powinny być aktywowane, gdy przycisk myszy / kontrolera zostanie zwolniony nad tym samym przyciskiem, na którym był wciśnięty . (Jeśli naciśnięcie nastąpiło nad jednym przyciskiem GUI, a następnie mysz została przesunięta i zwolniona nad innym przyciskiem GUI, żaden przycisk GUI nie jest aktywowany)

Powodem tego jest fakt, że umiejętności sterowania myszą są bardzo zmienne i często ludzie mają małe problemy z ustawieniem kursora dokładnie tam, gdzie chcą, lub nawet z precyzyjnym wskazaniem, który przycisk GUI najeżdżają w tej chwili. Teoria polega na tym, że ludzie mogą nacisnąć i przytrzymać przycisk myszy, aby podświetlić przycisk GUI, a jeśli ten przycisk GUI nie był tym, którego zamierzali użyć, mogą odsunąć kursor od niego przed zwolnieniem przycisku myszy w celu aby go nie naciskać.

Ale jeśli twoja gra jest kontrolowana przez gamepad, to absolutnie chcesz podjąć działania po naciśnięciu przycisku gamepada, a nie po zwolnieniu.

Edytuj, pięć lat później:

Od czasu opublikowania tej odpowiedzi zaczął pojawiać się nowy standard obsługi kursorów myszy, kontrolowanych przez kontrolery.

W powyższej odpowiedzi zasugerowałem, że powinny zostać zaimplementowane tak, aby działały dokładnie tak jak kursory, które faktycznie są kontrolowane przez myszy; wyróżnij po najechaniu myszą, aktywuj po najechaniu myszą, jeśli kursor nadal znajduje się nad tym samym elementem GUI.

Ale teraz kursory kontrolowane przez gamepada zwykle aktywują akcję GUI po przytrzymaniu przycisku gamepada przez pewien czas(zwykle około jednej sekundy). Jeśli zamierzasz podążać za tym systemem, musisz mieć wskaźnik ekranowy pokazujący, ile czasu upłynie do aktywacji (często jest to mały pierścień wokół samego kursora, który wypełnia się, gdy zbliżasz się do aktywacji najechany przycisk) i nadal musisz podświetlić element, który zostanie aktywowany, podczas gdy przycisk jest przytrzymywany (dobrym pomysłem jest zrobienie tego za każdym razem, gdy wskaźnik myszy znajdzie się nad elementem, nawet jeśli przycisk nie jest przytrzymywany). Podczas przytrzymywania przycisku kursor nie powinien być poruszany, aby uniknąć przypadkowej aktywacji elementów GUI, jeśli kursor zostanie w ostatnim momencie zderzony.

Zaletą tego systemu jest to, że pozwala on użytkownikowi, którego kursor myszy znajduje się nad niewłaściwym miejscem, uniknąć aktywacji tego elementu poprzez wcześniejsze zwolnienie przycisku; „odejdź od niego przed zwolnieniem” w stylu myszy jest mniej naturalne w przypadku gamepada niż myszy, a takie podejście pozwala znacznie łatwiej przerwać niechciane kliknięcie.

Zaczynamy nawet oglądać kilka gier eksperymentujących z tym modelem interakcji kursora, nawet gdy kursor jest poruszany przez prawdziwą mysz. No Man's Sky robi to, jako jeden przykład. Ciekawe będzie, czy to podejście do obsługi interakcji mysz-kursor stanie się coraz bardziej popularne i oczekiwane w nadchodzących latach.

Trevor Powell
źródło
10
+1. Czynność należy podjąć po zwolnieniu myszy, a nie na myszy. Jednak, aby było to skuteczne, ważne jest, aby sam element GUI zmieniał stan wizualny zdarzenia myszy.
Kylotan
+1 za powrót, by zaktualizować pytanie za 5 lat, aby było aktualne.
lozzajp,
Za każdym razem, gdy ktoś głosuje lub komentuje jedną z moich starych odpowiedzi, ponownie ją czytam, aby upewnić się, że nadal jest aktualna. :)
Trevor Powell,
1

Podjąłbym działanie natychmiast po naciśnięciu klawisza.

Najlepszy przykład, w którym akcja miała miejsce po wydaniu klucza, to Starcraft: Broodwar. Kiedy bardzo szybko naciskałem klawisze, często naciskałem następny klawisz, zanim całkowicie zwolniłem poprzedni, co spowodowało, że niektóre polecenia zostały zignorowane. (1A kliknięcie, 2A kliknięcie, 3A kliknięcie - 2 zostaną zignorowane)

Zostało to zmienione w Warcraft III, w wyniku czego gra wydawała mi się bardziej responsywna i nigdy nie miałem problemów z „lepką grupą kontrolną” z Broodwar.

RoboKozo
źródło