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:

LTS
2026.0.0.16 • 2022.0.3.99
wydana 138 dni temu
Beta
2026.100.0.1171 •
2026.100.0.1116
•
 GMRT beta 0.22.4

wydana  5 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Adriann
(~ostatnie 15 minut)
Discord
15 użytkowników online na discordzie:
LeD, Carl-bot, Fox, p..., GibkiKaktus, GMRussell, Dod, Moldis, Jarkozpl, Dyno, szmalu, bagno, l..., Borek, moeglich
Shoutbox
gnysek (23:05, 08.10.26)
Były takie próby, widać co z tego wyszło ;)
Kuzyn (17:06, 08.10.26)
może forum musi rozszerzyć działalność mocniej i skupiać ogólnie polski gamedev hihi
S
Sutikku (18:26, 05.10.26)
zapytaj onet zamknęło działalność, wizaz zamknęło działalność, krajobraz nie jest łatwy
Wojo (16:30, 28.09.26)
To świadczy o tym, że gmclan ma jeszcze duży potencjał, ale niestety nie jest on wykorzystywany tak jak należy.
Adriann (12:33, 28.09.26)
No włąśnie kurcze..nic tu się nie dzieje od lat a i tak wchodzę prawie coddziennie :D
Kuzyn (12:04, 19.09.26)
:] :]
gnysek (13:01, 04.09.26)
Dzięki! :D
S
Sutikku (11:08, 04.09.26)
gmclan to moje go-to żeby sprawdzić czy działa mi internet
Wojo (16:25, 03.09.26)
Pytanie tylko co z tym faktem możemy zrobić my jako użytkownicy? - przede wszystkim udzielać się więcej. Ja ogólnie lubię dużo mówić, dużo pisać, mało robić, ale poza mną obecnie jest może kilku użytkowników, którzy coś tutaj wkleją raz na ruski rok.
Wojo (09:25, 03.09.26)
Fora internetowe wyhamowały już dawno temu, ale teraz to nawet zaciągnęły ręczny. Przecież nic się na nich nie dzieje na ten moment. Trzeba czekać, aż może aktywność wróci
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?