Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kostra en Noviembre 07, 2018, 06:23:45 PM

Título: [Solucionado] joystick button released
Publicado por: kostra en Noviembre 07, 2018, 06:23:45 PM
Hola tengo un problema, existe el joystick_check_button() pero no veo ni un solo release T_T ojalá alguien sepa decirme una alternativa ni que sea con variables y alarms... Trato de colocar un objeto justo al dejar de apretar los botones L1 y R1, he probado poniendo !joystick_checo_button() pero como esta todo encerrado en otro botón que tiene que estar pulsándose, pues me crea un montón de objetos superpuestos :(

Graciasss
Título: Re:joystick button released
Publicado por: tu padre en Noviembre 07, 2018, 06:37:12 PM
Antes de continuar, necesitaria saber de que version de game maker hablamos, ya que para lograr lo que necesitas, las versiones de game maker 8.1 para atras tienen una forma muy diferente a las versiones studio.
Título: Re:joystick button released
Publicado por: kostra en Noviembre 07, 2018, 06:43:49 PM
Disculpa se me olvidó xd
Título: Re:joystick button released
Publicado por: kostra en Noviembre 11, 2018, 12:28:00 PM
UP.  Aun no solucione este problema que me perseguira en cada proyecto con joystick que haga, no entiendo por que no existe una funcion tan esencial :S
Título: Re:joystick button released
Publicado por: Markus en Noviembre 11, 2018, 03:33:52 PM
Lo siento, pero sólo lo puedes solucionar con variables. Puedes usar un arreglo:
[gml]
///Create
for (var i = 1; i <= 2; i++) //2 devices
{
  for (var j = 1; j <= 32; j++) //32 buttons
  {
    global.joy_pressed[i, j] = false;
    global.joy_press[i, j] = false;
    global.joy_releassed[i, j] = false;
  }
}
[/gml]

[gml]
///Begin Step
for (var i = 1; i <= 2; i++) //2 devices
{
  for (var j = 1; j <= 32; j++) //32 buttons
  {
    if (joystick_check_button(i, j))
    {
      if (!global.joy_press[i, j])
      {
        global.joy_pressed[i, j] = true;
        global.joy_press[i, j] = true;
      }
      else
        global.joy_pressed[i, j] = false;
    }
    else
    {
      if (global.joy_press[i, j])
      {
        global.joy_releassed[i, j] = true;
        global.joy_press[i, j] = false;
      }
      else
        global.joy_releassed[i, j] = false;
    }
  }
}
[/gml]
Luego, para usarlas:
[gml]
///Step
if (global.joy_releassed[1, 3]) //device 1 y button 3
{
  instance_create(x, y, obj_bala); //o lo que sea
}
[/gml]
Título: Re:joystick button released
Publicado por: kostra en Noviembre 11, 2018, 04:24:52 PM
Si si tranquilo es justo como lo esperaba pero ando algo colapsado xd, yo soy muy de scripts, me lo apaño de facil uso con argumentos y me lo guardo en mi super carpeta de scripts para futuros usos :D

Dos preguntas, en tu codigo pusiste ademas del check_released, el check y el check_pressed, o me lo parece a mi?
Me puedes ayudar con los ids de los botones?? Uso el control tipo ps2 con 2 joysticks y no se cual es ninguno xd

Espero respuesta, mientras voy apañando esto muchas gracias markus :D

EDITO: Que se supone que va en numb???
EDITO2: He probado poniendo una id en "numb" y el mismo en el id del step, he probado con varios ids (1,2,3 y 15) y no me funca
Título: Re:joystick button released
Publicado por: Markus en Noviembre 11, 2018, 06:27:56 PM
Cita de: kostra en Noviembre 11, 2018, 04:24:52 PM
Dos preguntas, en tu codigo pusiste ademas del check_released, el check y el check_pressed, o me lo parece a mi?
Sí, aproveché para poner en realidad los 3 eventos: releassed, check y pressed.

Cita de: kostra en Noviembre 11, 2018, 04:24:52 PM
EDITO: Que se supone que va en numb???
EDITO2: He probado poniendo una id en "numb" y el mismo en el id del step, he probado con varios ids (1,2,3 y 15) y no me funca
Ahí corregí el comentario, era i, j en vez de id, numb.
Título: Re:joystick button released
Publicado por: kostra en Noviembre 11, 2018, 08:32:53 PM
Buah me ha costado mucho arreglar el estropicio que he intentado hacer pero ya esta, inclido mejoraste mi script anterior xd

Lo tengo incluso los ids, del 1 al 10 (suficientes), gracias!!