Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mataca en Enero 20, 2016, 02:02:16 AM

Título: Swipe android pixel a pixel
Publicado por: Mataca en Enero 20, 2016, 02:02:16 AM
Hola markeros!
Vengo con una nueva duda.
Tengo un sistema de swipe sacado no me acuerdo si desde este foro o desde el de yoyogames, el cual es bien simple. El tema es que al mantener apretado el dedo en la pantalla y arrastrarlo, en vez de hacerlo "suave" por así decirlo, lo have pixel a pixel, por lo cual parece que anduviera todo trancado.
Cómo podría hacer para que el swipe vaya normal, asi como cuando scrolleas una página web o similar?
El código que uso es el siguiente:

Create
drag_x = device_mouse_raw_x(0);
drag_y = device_mouse_raw_y(0);


Step
if (mouse_check_button_pressed(mb_left)) {
    drag_x = device_mouse_raw_x(0);
    drag_y = device_mouse_raw_y(0);
}
if (mouse_y <= 488){
if (mouse_check_button(mb_left)) {
    view_xview[1] += (drag_x - device_mouse_raw_x(0))*1;
    view_yview[1] += (drag_y - device_mouse_raw_y(0))*1;
    view_xview[2] += (drag_x - device_mouse_raw_x(0))*1;
    view_yview[2] += (drag_y - device_mouse_raw_y(0))*1;
    drag_x = device_mouse_raw_x(0);
    drag_y = device_mouse_raw_y(0);
    view_xview[1] = max(0, min(view_xview[1], room_width - view_wview[1]));
    view_yview[1] = max(8, min(view_yview[1],126));
    view_xview[2] = max(0, min(view_xview[2], room_width - view_wview[2]));
    view_yview[2] = max(252, min(view_yview[2], 370));
}}


Nota: Esta marcado para que solo haga el swipe en determinado lugar de la pantalla.

Desde ya, muchas gracias!

Saludos,
Mataca
Título: Re:Swipe android pixel a pixel
Publicado por: arcangelcaos en Enero 20, 2016, 08:36:40 AM
Hola, para mover la pantalla tengo algo tal que asi

glob left pressed
if window_mouse_get_x() < view_wport[0] and window_mouse_get_y() < view_hport[0]
{XI = mouse_x;YI = mouse_y}


Yo lo hago, para averiguar si lo que estas es clickeando o arrastrando el dedo. XI e YI son los valores del mouse cuando tocas la pantalla.
Esto va en step, si la deferencia es mayor de 40 entre el click inicial y donde esta ahora es que estas arrastrando, y crea un objeto especial.
if XI > 0 and YI > 0
{Diferencia = point_distance(XI,YI,mouse_x,mouse_y)
    if Diferencia > 40
    {if !instance_exists(ObjSigueRaton){instance_create(mouse_x,mouse_y,ObjSigueRaton)}}
}


En el CREATE del ObjSigueRaton
x1 = x
y1= y
XO = view_xview[0]
YO = view_yview[0]


STEP del ObjSigueRaton
DifeX = mouse_x -x1
DifeY = mouse_y -y1

view_xview[0]=XO - (DifeX/1.5)
view_yview[0]=YO - (DifeY/1.5)  // el 1.5 pone lo que quieras, es para la velocidad de movimiento de la pantalla. Tu pon la cantidad que a ti te guste

if view_xview[0] < 0{ view_xview[0]=0}
if view_yview[0] < 0{ view_yview[0]=0}  //con esto evito que se salga de la view

if (view_xview[0]+view_wview[0]) > room_width{ view_xview[0]= room_width - view_wview[0]}
if (view_yview[0]+view_hview[0]) > room_height{ view_yview[0]= room_height - view_hview[0]}


A mi me funciona decentemente.

saludos.