Hola amigos, hace tiempo estuve tratando de conectar un mando genérico a mi juego, asi que vi el gamepad imput en la página de yoyo games, estuve tratando de todo, use casi todas las funciones que me permitía como ev_joystick1_up o gp_face1 y ninguna me permite mover con el control, estuve revisando para ver si era problema de que no reconocia mi joypad, pero después de experimentar si lo había reconocido en el puerto 4, pero a pesar de esto seguía sin funcionar, alguien que conozca acerca de esto si me puede ayudar le agradeceria mucho :,3
(abajo dejo una foto del tipo de control que estoy usando)
Buenos días, yo tuve mas o menos el mismo problema en GMS2, descubrí que se puede "remapear" el control, te resumiré lo que hice:
- Busqué bien que entrada usa mi control (https://manual.yoyogames.com/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_connected.htm, https://manual.yoyogames.com/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm), en youtube hay tutoriales de cómo saber que entrada se está usando
- Al rato descubrí que está la función gamepad_test_mapping y me puse a investigar más a fondo.
- Supe que se puede remapear para que las teclas funcionen como se desea
- Afortunadamente me topé con este software que recibe las teclas que vayas a usar del gamepad y te genera un string de mapping (https://generalarcade.com/gamepadtool/)
El código que usé:
[gml]
if (mapping == noone && gamepad_is_connected(4) && gamepad_get_mapping(4) == "no mapping"){
mapping = gamepad_get_guid(4) + "," + gamepad_get_description(4);
mapping = mapping +
",a:b0,b:b1,x:b2,y:b3,back:b6,guide:b8,start:b7,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1"+
",platform:windows";
gamepad_test_mapping(4, mapping);
}
[/gml]
Explicación:
mapping es la variable donde guardo el "mapeo" del control
Es decir, primero verifico si no hay mapeo y si el control está conectado (
entrada 4)
Si lo anterior es cierto, se guarda en
mapping el
guid con la
descripción del gamepad
Luego,
concateno la variable mapping (que ya tiene el guid y la descripción) con el string generado por el programa y la plataforma a usar (windows o mac); y llamo la función
gamepad_test_mapping para que el control use ese mapeo.
Este problema me había surgido a mí porque no tengo a la mano un control de xbox o playstation (ver imagen
xbox.png), sino que mi control es un psp con un programa homebrew para que funcione como un gamepad (fuSa gamepad) :-[ (ver
imagen psp.jpg)
No soy un experto en esto de mapping, pero quedo atento si tienes dudas
Espero esto te sirva!