Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: pacne en Marzo 19, 2014, 04:30:05 PM

Título: Ayuda con joystick android
Publicado por: pacne en Marzo 19, 2014, 04:30:05 PM
Buenas tengo un joystick que me descargue de aqui y lo modifique un poco, bueno me gustaria que por ejemplo al mover el joystick en las direccion que quisiera que el personaje siguiera en movimiento y no se parar. muchas gracias

-tengo un evento create en el joystick asi:

str=""

left_device_id=-1
left_start_x=-1
left_start_y=-1
analog_width=sprite_width/2
analog_height=analog_width

left_analog_direction = -1
left_analog_distance = -1

lad=-1



- Otro un evento step en el joystick asi:

for (i=0;i<4;i += 1)
{
if device_mouse_check_button_pressed(i,mb_left)
    {
        if device_mouse_raw_x(i) < window_get_width()/2
        {
            left_device_id=i
            left_start_x=device_mouse_raw_x(i)
            left_start_y=device_mouse_raw_y(i)
               
        }       
        else
        {
            left_device_id=i
            left_start_x=device_mouse_raw_x(i)
            left_start_y=device_mouse_raw_y(i)
        }
    }
}


if left_device_id > -1
{
    left_analog_direction = radtodeg(arctan2((device_mouse_raw_y(left_device_id)-(left_start_y)),(device_mouse_raw_x(left_device_id)-(left_start_x)+.000001)));
    left_analog_distance = sqrt(sqr(device_mouse_raw_x(left_device_id)-(left_start_x))+sqr(device_mouse_raw_y(left_device_id)-(left_start_y)));;

}


str=""

if device_mouse_check_button_released(left_device_id,mb_left)
{
    left_device_id=-1
    left_analog_direction=-1
    left_analog_distance = -1
}

lad=-1
if abs(left_analog_distance) > 15
{
    lad=point_direction(left_start_x,left_start_y,device_mouse_raw_x(left_device_id),device_mouse_raw_y(left_device_id))
}


- Y otro evento draw gui asi:

if left_device_id>-1
{
str="left direction= " + string(left_analog_direction) + "#left distance= " + string(left_analog_distance)
draw_sprite(bjuego,0,left_start_x,left_start_y)
if left_analog_distance > analog_width {left_analog_distance=analog_width}
if left_analog_distance < -analog_width {left_analog_distance=analog_width}

point_x=(left_start_x)+left_analog_distance*(cos(left_analog_direction*pi/180));
point_y=(left_start_y)+left_analog_distance*(sin(left_analog_direction*pi/180));


}