Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: djboro88 en Agosto 26, 2015, 10:09:03 AM

Título: [SOLUCIONADO] Desplazar pantalla arrastrando
Publicado por: djboro88 en Agosto 26, 2015, 10:09:03 AM
Hola GAMEMAKER@S !!

Imaginemos que el juego está ejecutandose en una tablet...
Tengo una room muy grande, ¿Como se podría conseguir el moverte por la room libremente arrastrando el dedo?
Título: Re:Desplazar pantalla arrastrando
Publicado por: djboro88 en Agosto 26, 2015, 06:26:23 PM
He encontrado este codigo en el foro.
Pero no funciona de ninguna manera.

if (mouse_check_button_pressed(mb_left)) {
    drag_x = device_mouse_raw_x(0);
    drag_y = device_mouse_raw_y(0);
}
if (mouse_check_button(mb_left)) {
    // actual dragging logic:
    view_xview += (drag_x - device_mouse_raw_x(0))*2;
    view_yview += (drag_y - device_mouse_raw_y(0))*2;
    drag_x = device_mouse_raw_x(0);
    drag_y = device_mouse_raw_y(0);
    // make sure view doesn't go outside the room:
    view_xview = max(0, min(view_xview, room_width - view_wview));
    view_yview = max(0, min(view_yview, room_height - view_hview));
}


Ayuda porfavor...
Título: Re:Desplazar pantalla arrastrando
Publicado por: djboro88 en Agosto 26, 2015, 06:39:30 PM
Solucionado.

En el evento STEP el codigo.
Y "Enable the use of views"

Y a funcionar !!
Título: Re:Desplazar pantalla arrastrando
Publicado por: Guacusio en Agosto 26, 2015, 08:00:55 PM
Cita de: djboro88 en Agosto 26, 2015, 06:39:30 PM
Solucionado.

En el evento STEP el codigo.
Y "Enable the use of views"

Y a funcionar !!

¿Estás seguro de que funciona? Probé el código y si bien hay un desplazamiento de la view, éste no es igual a lo que se desplaza el dedo/mouse. Entiendo que la idea es que si arrastras 100 pixeles el dedo/mouse, la view se mueva los mismos 100 pixeles y no otra cantidad. Encontré un código que sí hace eso (http://gmc.yoyogames.com/index.php?showtopic=584295 (http://gmc.yoyogames.com/index.php?showtopic=584295)):

Create:
xPreviousMouse= window_mouse_get_x();
yPreviousMouse= window_mouse_get_y();


Step:
var mx = window_mouse_get_x() * (view_wview[0] / view_wport[0]);
var my = window_mouse_get_y() * (view_hview[0] / view_hport[0]);
if (mouse_check_button(mb_left)) {
  view_xview[0] = clamp(view_xview[0] + (xPreviousMouse - mx), 0, room_width - view_wview[0]);
  view_yview[0] = clamp(view_yview[0] + (yPreviousMouse - my), 0, room_height - view_hview[0]);
}
xPreviousMouse = mx;
yPreviousMouse = my;


Esto sí mueve el view la misma cantidad de pixeles que se arrastra el dedo/view. Compara ambos para que veas cuál te sirve más.