Skocz do zawartości
  • 0
MaxGaming

[GMS] Jak interpretować kliknięcia na obiekty

Pytanie

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ę...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

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

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

resetuj w begin stepie a obiekty niech sprawdzają w zwykłym stepie. W zasiadzie to Hud powinien zmieniać tę zmienną tylko w begin. Broń boże w draw bo się kolejność posypie

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Z tym że to jest "pewne" coś co ma się wykonać w begin, zawsze się wykona pierwsze niż w step. Niezależnie od ilości obiektów po to te eventy są

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Ale czasami z różnych powodów w różnych grach zdarzało się, że musiałem niektóre kliknięcia wyjątkowo sprawdzać w begin. Myślę że to rozwiązanie jest lepsze, ale pewnie na dłuższą metę odkryję jakieś minusy tego patentu.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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;

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×