Skocz do zawartości

[GMS] Jak interpretować kliknięcia na obiekty


MaxGaming

Rekomendowane odpowiedzi

Siemanko,

mam taki problem. Tworzę grę z myślą o androidzie(obsługa multidotyku, prawdopodobnie 2 punktowego wystarczy). Teraz stanąłem przed drobnym ale upierdliwym problemem, a że dawno nie robiłem gierek i trochę wyszedłem z wprawy w myśleniu analitycznym :/

Mam HUD(nieregularny kształt). Jak zrobić, aby na przykład naciskając na element HUDu nie naciskać automatycznie na obiekt znajdujący się pod nim? Teraz na przykład wybierając rodzaj amonicji, jeśli pod przyciskiem znajduje się jednocześnie przeciwnik to namierzamy go... Podobnie jeśli pozycje dwóch przeciwników nakładają się na siebie co zrobić żeby po naciśnięciu reagował tylko obiekt wyżej?

schemat.png

Przykład. Co jeśli miejsce naciśnięcia(zielony punkt) znajduje się na GUI(czerwony kwadrat), ale jednocześnie na obiekcie pod nim(pomarańczowy kształt)? Jak wtedy sprawić aby zareagował tylko obiekt GUI a nie oba? Należy wziąć pod uwagę wsparcie multidotyku które mocno utrudnia sprawę...

Odnośnik do komentarza
Udostępnij na innych stronach

Może zrób jakąś globalną zmienną powiedzmy o nazwie "HudClick" i ustawiaj ją co stepa na false a gdy klikniesz coś na hudzie, ustaw na true.

I teraz każda interakcja obiektów gry z myszką powinna sprawdzać dodatkowo czy HudClick == false by akcja się odbyła

Odnośnik do komentarza
Udostępnij na innych stronach

Myślałem o tym, ale co jak najpierw wykryje obiekt przeciwnika kliknięcie, potem HUD i ustawi zmienną za późno? I co zrobić z tym żeby nie było takiej akcji że jednym palcem kierujemy drążkiem na hudzie, drugim naciskamy na przeciwnika i... nic bo naciskając na hud przestawia się zmienna?

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra pokminiłem i znalazłem pewniejszy sposób. Każdy element HUDu jest dzieckiem pHUD i sprawdzam podczas naciskania na cokolwiek co nie jest elementem hudu jaka jest odległość kliknięcia od najbliższego pHUD i jeśli jest równe 0 to wtedy nie wykonuje się event.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

ja też robię tak, że gui wykrywam w begin stepie, jak się coś kliknie to ustawiam glolbal.gui_clicked = true;, a w end stepie albo na początku begin stepa (jeśli tylko jeden obiekt sprawdza eventy GUI) znów ustawiasz global.gui_clicked = false;

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...