Septiembre 25, 2015, 12:11:09 PM Ultima modificación: Septiembre 25, 2015, 12:16:15 PM por kostra
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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#1 Septiembre 25, 2015, 04:07:59 PM Ultima modificación: Septiembre 25, 2015, 04:09:48 PM por penumbra
¿En qué parte haces que la variable jump deje de ser true? Al menos en el código que has colocado, no se ve.

Penumbra tiene razón, jump no deja de ser true, osea, vuela y vuela, xD
Cordialmente Jodidox!

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...
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#4 Septiembre 25, 2015, 04:59:08 PM Ultima modificación: Septiembre 25, 2015, 05:03:18 PM por penumbra
¿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.

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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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)

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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

moooc! bump :3
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]