Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kostra en Septiembre 25, 2015, 12:11:09 PM

Título: device_mouse_check_button_pressed no funca
Publicado por: kostra en Septiembre 25, 2015, 12:11:09 PM
Wenas, he conseguido porfin poner multitouch con virtual keys... pero tengo un problema, y es que, aunque ponga "device_mouse_check_button" o "device_mouse_check_button_pressed"... los dos me los detecta como "device_mouse_check_button" es decir, que si clicko y lo mantengo, se mantiene y se mantiene en vez de detectar solo el click inicial y parar como siempre han sido los "pressed"..

el codigo que tengo para un boton donde necesito que se mueva el player por ejemplo es:
for(device=0;device<=4;device+=1)
{
    if (device_mouse_check_button(device,mb_left))
    and device_mouse_x(device) > x
    and device_mouse_x(device) < x+sprite_width
    and device_mouse_y(device) > y
    and device_mouse_y(device) < y+sprite_height
        oPlayer.left = true;
}


sin embargo, en el boton de saltar, trngo esto puesto:
for(device=0;device<=4;device+=1)
{
    if (device_mouse_check_button_pressed(device,mb_left))
    and device_mouse_x(device) > x
    and device_mouse_x(device) < x+sprite_width
    and device_mouse_y(device) > y
    and device_mouse_y(device) < y+sprite_height
        oPlayer.jump = true;
}


pero al player le da la gana ponerse a volar, VIVA LA VIDA LOCA!! XD
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: penumbra en Septiembre 25, 2015, 04:07:59 PM
¿En qué parte haces que la variable jump deje de ser true? Al menos en el código que has colocado, no se ve.
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: jodidox en Septiembre 25, 2015, 04:15:27 PM
Penumbra tiene razón, jump no deja de ser true, osea, vuela y vuela, xD
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: kostra en Septiembre 25, 2015, 04:38:21 PM
porsupuestísimo que si lo tengo puesto, incluso he probado en varios lugares, tanto un else debajo del for, como en mouse global release, he incluso puesto una variable "press", y justo en la linea donde lo pongo true he puesto "if press == 0" seguido de que se ponga a 1, entonces pasa que, vuela vuela... y solo se cumple eso último cuando suelto una vez...
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: penumbra en Septiembre 25, 2015, 04:59:08 PM
¿Puedes poner exactamente el código que estás usando para deshabilitar el salto? (todo el bloque). El error está de hecho en el código que has pegado, pero de una vez ver todo el código para comentarlo completo.
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: kostra en Septiembre 25, 2015, 05:43:32 PM
intento 1:
for(device=0;device<=4;device+=1)
{
    if (device_mouse_check_button_pressed(device,mb_left))
    and device_mouse_x(device) > x
    and device_mouse_x(device) < x+sprite_width
    and device_mouse_y(device) > y
    and device_mouse_y(device) < y+sprite_height
        oPlayer.jump = 1;
    else
        oPlayer.jump = 0;
}


intento 2:
for(device=0;device<=4;device+=1)
{
    if (device_mouse_check_button_pressed(device,mb_left))
    and device_mouse_x(device) > x
    and device_mouse_x(device) < x+sprite_width
    and device_mouse_y(device) > y
    and device_mouse_y(device) < y+sprite_height
        oPlayer.jump = 1;
}
else
    oPlayer.jump = 0;


intento 3:

create
press = 0;

step
for(device=0;device<=4;device+=1)
{
    if (device_mouse_check_button_pressed(device,mb_left))
    and device_mouse_x(device) > x
    and device_mouse_x(device) < x+sprite_width
    and device_mouse_y(device) > y
    and device_mouse_y(device) < y+sprite_height
        if press == 0
        {
            press = 0;
            oPlayer.jump = 1;
        }
}


acabo de probar hasta poniendo una alarma que desactive auto el jump
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: penumbra en Septiembre 25, 2015, 06:34:31 PM
Yo recomendaría que vieras el tutorial de multitouch (analog sticks) incluído en GMS, porque estás pasando por alto varias cosas inherentes al multitouch.

La sentencia else no tiene sentido usarla después de un for, sólo se debería de usar con un if. El if interior del tercer bloque tampoco tiene caso: "si press es igual a cero, hazla cero"

Cita de: kostra en Septiembre 25, 2015, 12:11:09 PM
es decir, que si clicko y lo mantengo, se mantiene y se mantiene en vez de detectar solo el click inicial y parar como siempre han sido los "pressed"..
La función device_mouse_check_button_pressed() está funcionando como es debido, pero creo que estás confundiendo funciones:
mouse_check_button_pressed devuelve true cuando un dedo se ha posado en la pantalla. Si devuelve false, no es que el usuario haya despegado un dedo, sino que el usuario símplemente no ha hecho presión. De esto se deduce que device_mouse_check_button_pressed NO es la función adecuada para detener un salto (ni siquiera usando else)
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: kostra en Septiembre 26, 2015, 06:27:29 PM
no es para detener un salto... es para hacerlo, pero una sola vez no a cada step, tengo entendido que el pressed es SOLAMENTE al detectar el "click", no en CADA MOMENTO en el que tienes click pulsado :/ me explico?, ahora miraré eso que dices, no sabía que habia de eso, a ver si lo encuentro
Título: Re:device_mouse_check_button_pressed no funca
Publicado por: kostra en Septiembre 28, 2015, 12:34:51 PM
moooc! bump :3