Korzystanie z pada w grze

środa, 12 Października 2022, 15:18
Czas czytania 1 minuta, 43 sekundy
Zgodne z GM: gms2
Jak prawidłowo wykrywać gamepady w GameMakerze.
GameMaker nie wymaga niczego mocno skomplikowanego, aby obsługiwać gamepady. Warto jednak zaznaczyć, że w starszych wersjach stosowało się sztuczkę, która skanowała pod jaki systemowy port załapał się nasz pad (zależnie od obsługi pewnych funkcji były to 0-3 dla XInput lub 4-11 dla DirectInput). Później dodano jednak event asynchroniczny, który pozwala to stwierdzić w momencie odpalenia gry lub podłączenia nowego pada i tę wersję powinno się uznać za obowiązującą.

Na początku gry ustalamy, że nie ma podpiętego gamepada:
kod/// create
gamepad_id = undefined;

Następnie, robimy obsługę przycisków (jeśli pada jednak wykryto i znamy jego id, a więc gamepad_id nie jest niezdefiniowane):

kod/// step
if (gamepad_id != undefined) {
if gamepad_button_check_pressed(gamepad_id, gp_face1) { // gp_face1 to X na padach PlayStation i A na padach Xboxa
show_message("Pad działa!");
}
}

Teraz zostaje wykrywanie podłączenia pada. Do tego wykorzystujemy event asynchroniczny - System.

Wskazówka:
Więcej o zdarzeniach asynchronicznych przeczytacie pod adresem: manual.yoyogames.com/.../System.htm
Więcej o funkcjach pada i przyciskach przeczytasz pod adresem: manual.yoyogames.com/.../Gamepad_Input.htm

kod// Async - System
switch(async_load[? "event_type"])
{
case "gamepad discovered":
gamepad_id = async_load[? "pad_index"]; // tutaj zapisujemy id pada; jeśli podłączymy drugiego, nadpisze pierwszy
break;
case "gamepad lost":
gamepad_id = undefined; // po odłączeniu pada ustawiamy, że żaden nie jest podłączony
break;
}
Wskazówka:
Zapis "zmienna[? klucz]" to skrócona wersja ds_map_find_value(zmienna, klucz);

I to wszystko. Jak widać - podłączenie i obsługa padów nie jest wcale trudna.
Wskazówka:
Polecam także sprawdzenie kursu na podobny temat od YoYoGames: gamemaker.io/.../coffee-break-tutorials-setting-up-and-using-gamepads-gml
Polecam też świetną bibliotekę do obsługi myszy/klawiatury/pada na WSZYSTKICH platformach - github.com/JujuAdams/Input
Komentarze (łącznie 0):
Nie ma jeszcze żadnego komentarza. Czas to zmienić

Najnowsze wersje GameMakera:

Stabilna
2024.06.2.162 • 2024.6.1.208
wydana 12 dni temu
LTS
2022.0.2.51 • 2022.0.2.49
wydana 284 dni temu
Beta
2024.800.0.597 •
2024.800.0.620
 0.11.0

wydana  2 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
Shoutbox
gnysek (18:31, 25.07.24)
Ogłaszam nowy etap w historii GameMakera.
gnysek (11:36, 08.07.24)
Ale w sumie taki numer GG był bezpieczniejszy niż nr. telefonu czy kontakt społecznościowy. Utrudniał stalkowanie i ułatwiał banowanie.
Wojo (08:08, 08.07.24)
Niestety to już nie te czasy kiedy pytało się kasjerki o wiek i numer Gadu-Gadu...
Adriann (08:28, 05.07.24)
Albo okraść :|
Adriann (08:28, 05.07.24)
Może pani chciała zobaczyć twoje dane i Cię poderwać :d
gnysek (10:38, 03.07.24)
Mnie ostatnio w Żabce zapytali o wiek. A mam już ponad dwie osiemnastki.
Wojo (08:27, 30.06.24)
Ogólnie to miał być żart ponieważ portal internetowy, którego można opisać jako PH jest portalem przeznaczonym dla dorosłych. Miało być śmiesznie wyszło żenująco, a wiadomości w shoutboxie nie mogę skasować :P
Wojo (09:40, 28.06.24)
Tymon jak co wizytę musiałem potwierdzić wiek
gnysek (14:15, 17.06.24)
Bo Łapusz woli alkohol, niż się organizować. Co tam Pixel Heaven, sprawdźcie jego zbiórki na książki...
Adriann (21:02, 13.06.24)
Bardzo słusznie, straszna patola z tą organizacją :D
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?