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.13.1.193 • 2024.13.1.242
wydana 83 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 218 dni temu
Beta
2024.1400.0.841 •
2024.1400.0.836
 0.17.0

wydana  6 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
40 użytkowników online na discordzie:
RogerDodg3r, Miłosz, Alice, LeD, Carl-bot, Saus, 🧁Cupcake🧁, Cosplyfanka, Wielki Druid, Alkapivo, Kowu, LadyLush, tomqz, Gameduro, r..., Threef, chleb, HappyOrange, Arrekin, Dyno, 🆅🅸🆃🅾74🅼, szmalu, Korodzik, Voytec, Ulti, Danieo, antek, Tidżi, g..., Kandif, l..., Sporek, moeglich, s..., 42traviss, Add92, Krzysiek1250, h..., Shockah, m...
Shoutbox
gnysek (10:36, 04.07.25)
Bo wszyscy piszą na discordzie :)
M
Modnar23 (20:08, 29.06.25)
Ja po 13 latach postanowiłem się zalogować i widzę, że straszne pustki na forum. Kiedyś to aż huczało na forum. :)
Chell (08:18, 26.06.25)
to masz krótką pamięć, bo od 2014 jakoś nie wiadomo ilu nowych userów nie przybyło :-D
p
pablo1517 (18:34, 16.06.25)
Ja w sumie żadnego z tych nicków nie kojarze poza Gnyskiem xD
gnysek (10:00, 16.06.25)
Odwiedzić starych dobrych znajomych.
S
Sutikku (01:48, 14.06.25)
nie wiem który to już rok, że ciągle mechanicznie wchodzę na gmclan, w sumie sam nie wiem po co
S
Sutikku (01:47, 14.06.25)
SIEMA! U mnie znośnie
p
pablo1517 (21:48, 07.06.25)
Siema wszystkim! Co tam slychac?
gnysek (13:44, 10.04.25)
Za 3-4 miesiące GM przejdzie na wydania "półroczne", więc korzystanie z wersji beta żeby sprawdzić nowości będzie wskazane :P
Adriann (18:09, 08.04.25)
Odpowiadam, dzisiaj :D
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?