Buenas a todos, tengo una duda que llevo bastantes horas sin resolver, buscando como un loco y nada..
Estoy haciendo un juego para Android, hasta ahí todo bien.. el problema esta cuando paso el juego al movil a la hora de disparar, tengo un "Evento global de botón derecho" y se me activa pulse la parte que pulse de la pantalla, y me gustaría que se pulsara Solamente en una zona de la pantalla.

Ya que, tengo dos joysticks, uno derecho y otro izquierdo, el derecho mueve y el izquierdo dispara. Y el problema esta en que pulse donde pulse de la pantalla ya dispara, y me gustaría que fuera solamente en la zona del joystick o en el mismo joystick.

Gracias de antemano, un saludo!

¿Qué código estás usando, virtualKey o mouse Event? Si podes poné el código para ver en que está fallando.

Hola, seria útil que mostraras la parte del código en el que se encuentra el evento del mouse...
Utilizar el evento de mouse para juegos de android es valido pero si el juego es complejo seria mejor recurrir a joysticks puedes ver un tutorial sobre esto aquí: https://www.youtube.com/watch?v=ElVHN80-iIg
Si aun así prefieres utilizar el dichoso evento del mouse entonces deverias crear un código con unas sentencias IF algo complicadas ya que tienes que crear un IF con ayuda de la variable mouse_x y mouse_y para delimitar la zona de clickeo, es decir algo como IF (mouse_x=>1 and mouse_x=<3 and mouse_y=>5 and mouse_y=<7 and mouse_check_button(mb_left)){<ACCION>}
Hace tiempo que no utilizo el GM por eso es que quizás este código no funcione pero se debería entender la idea, lo que hago es decirle al programa que el botón se encuentra en las coordenadas x entre 1 y 3 y en las coordenadas y entre 5 y 7 lo que significa que nuestro botón tiene sus esquinas en los puntos (1,5) y (3,7) y en el fondo comprobamos si es que el mouse se encuentra dentro del rectángulo que se forma entre esos puntos y si ademas se esta haciendo click... Para hacer esto yo me servia de una hoja de papel en la que graficaba en la recta y después pasaba los datos al IF aunque si lo entiendes bien lo puedes hacer mental y si no usar algún programa de geometría como geogebra...

sixer se pone >= <=  si lo pones primero el = no va xd

a ver, sixer va por buen camino alo que necesitas, él quiere decir algo así, detectar al clickar si el mouse (en este caso sería el dedo al clickar, tampoco sé mucho de eso, pero si dices que vale el mouse, pues eso xd), si está dentro del sprite:
if mouse_check_button(mb_left)
{
    mouse_x >= x and mouse_x < sprite_width and mouse_y >= y and mouse_y < sprite_height
    {
        //aquí lo que hace
    }
}


claro, que esto suele valer para sprites cuadrangulares mejor xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Muchas gracias a todos por responder!
He estado probando y he llegado a conseguir disparar pulsando la parte de arriba derecha, pero ami me interesaría la de abajo izquierda (donde tengo el Joystick)

Os dejo el código:
if(!isFiring)
{
    isFiring = true;
    alarm[0] = fireRate;
    b1=instance_create(x,y,obj_bala);
    b1.direction = v_direction;
}


Aparte he encontrado otro código que no se bien bien lo que hace pero va de maravilla, solo que al pasarlo al móvil no funciona ya que lo que creo que hace es simular que estas tocando la tecla "Espacio", cuando en realidad no.
if(can_shoot=1){ can_shoot=0;
if(sprite_index=spr_jugador){
v_timer=0;
}}


Todo junto el código me queda esto:
///Disparo
if(can_shoot=1){ can_shoot=0;
if(sprite_index=spr_jugador){
v_timer=0;
}}

if(!isFiring)
{
    isFiring = true;
    alarm[0] = fireRate;
    b1=instance_create(x,y,obj_bala);
    b1.direction = v_direction;
}

Y este código etaria puesto en un evento de teclado, con la tecla Espacio.

Por ultimo en un evento "Step":
if(can_shoot=0){v_timer+=1;}
v_t=v_timer/60;

if(v_t>shoot_speed){can_shoot=1;}


Y estos códigos básicamente lo que hacen es que al pulsar el Joystick derecho dispare, si toco cualquier parte de la pantalla no hace nada (como yo quería) pero el problema es que Android no reconoce la tecla "Espacio", y ese código esta puesto que cuando pulse espacio, haga eso.

Lo he puesto en el ratón global izquierdo y me pasa como antes, toque donde toque dispara, en el ratón central tampoco funciona (Android se ve que tampoco lo reconoce) y en el derecho juraría que pasaba lo mismo que con el izquierdo.

Muchas gracias por echarme una mano, un saludo!


Cita de: kostra en Octubre 31, 2014, 06:29:01 AM
sixer se pone >= <=  si lo pones primero el = no va xd

a ver, sixer va por buen camino alo que necesitas, él quiere decir algo así, detectar al clickar si el mouse (en este caso sería el dedo al clickar, tampoco sé mucho de eso, pero si dices que vale el mouse, pues eso xd), si está dentro del sprite:
if mouse_check_button(mb_left)
{
    mouse_x >= x and mouse_x < sprite_width and mouse_y >= y and mouse_y < sprite_height
    {
        //aquí lo que hace
    }
}


claro, que esto suele valer para sprites cuadrangulares mejor xd

Jeje si es que hace unos meses que no uso el GMS y ahora pase por la comunidad para responder una que otra pregunta jeje xP el mouse izquierdo vale como un toque de la pantalla en un dispositivo Touch :D