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.11.0.179 • 2024.11.0.227
wydana  3 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 19 dni temu
Beta
2024.1100.0.713 •
2024.1100.0.726
 0.14.0

wydana 11 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
Shoutbox
Uzjel (20:17, 10.12.24)
Cały ruch przeniósł się na Discorda.
MagnusArias (17:43, 01.12.24)
O matko... a ja tutaj jestem od ponad 15 lat i czasami zaglądam... biernie bo biernie, ale czasem wpadnę
gnysek (11:46, 17.11.24)
Witamy, witamy!
baca (12:22, 16.11.24)
To już 25 lat.. Witam po paru latach nieobecności.
gnysek (11:05, 15.11.24)
Natomiast obecne forum istnieje od 2004, jak z iglu.cz na gmclan.org przeszliśmy i od tego czasu nie było resetów danych.
gnysek (12:35, 13.11.24)
Ogólnie GMCLAN istnieje 22 lata, ale na to trofeum nie zrobiłem (jeszcze xD)
Chell (20:41, 08.11.24)
wow, ta emotka w ogóle nie wygląda jak : O xD
Chell (20:40, 08.11.24)
tylko? :O 4tk ma 15
Borek (18:12, 07.11.24)
Właśnie dostałem powiadomienie z forum, że jestem na GMClanie 18 lat :D Ja pierdzielę...
S
Sutikku (08:43, 18.10.24)
TIL, gamemaker jest starszy ode mnie
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?