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.14.4.222 • 2024.14.4.268
wydana 88 dni temu
LTS
2026.0.0.16 • 2022.0.3.99
wydana 34 dni temu
Beta
2024.1400.5.1065 •
2024.1400.5.1031
 0.20.0

wydana 49 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
41 użytkowników online na discordzie:
Miłosz, Morti, 🧁Cupcake🧁, Alice, LeD, Nitro Slav, Carl-bot, Sporek, pABLO, Fox, Destiny, GMRussell, Tidżi, fervi, Threef, Uzjel, s..., Pako, Murrri, Jarkozpl, Andrzej, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, Korodzik, Ulti, Kandif, Skovv, tertegier1137, bagno, Arrekin, Mtax, g..., szynka, Borek, moeglich, Add92, h..., Shockah, PanPupa
Shoutbox
Wojo (21:21, 28.06.26)
na ten moment czerwiec prezentuje się dość przyzwoicie jesli chodzi o ilosc wpisow w shoutboxie bo aż trzy! a taki styczeń zero :0
gnysek (15:06, 10.06.26)
oraz pokój na świecie
Kuzyn (17:16, 08.06.26)
i urlop
gnysek (11:13, 05.05.26)
czekamy na GMRT
Wojo (14:53, 04.05.26)
Co tak cicho?
gnysek (11:01, 30.04.26)
Grill panie, grill.
Wojo (14:18, 29.04.26)
Jak planujecie spędzić najbliższą majówkę?
Wojo (13:15, 13.03.26)
Ja zainstalowałem sobie Linux mint na swoim laptopie :)
Wojo (10:21, 12.02.26)
Tak, po zmianach gmclan przeżywa drugą młodość. Najnowsze trendy wskazują, że ten rok będzie rokiem Linuxa, rokiem odejścia od Facebooka i rokiem odejścia od discorda na rzecz forów internetowych B)
K
Kamilek (21:57, 08.12.25)
Ale klimat tu znowu wrócić! :-D
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?