Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: peludo en Octubre 02, 2018, 12:56:10 PM

Título: dibujar objeto con el dedo
Publicado por: peludo en Octubre 02, 2018, 12:56:10 PM
Hola buenas, necesito crear un obj_linea; que al tocar en la pantalla deslices y valla dibujando la linea.
he probado con el draw_line_width(MouseXStart, MouseYStart, MouseX, MouseY,6;  pero me gustaria mejorarlo, como por ejemplo, hacer que al pinchar dibujes a mano alzada, pero cuando sueltas esa linea(mal dibujada) se corrige y se crea recta. Y tambien limitarle la longitud por ejemplo solo 200px, por mucho que deslice.
Muchas gracias!!
Título: Re:dibujar objeto con el dedo
Publicado por: 3dgeminis en Octubre 02, 2018, 07:59:04 PM
Si al final sera una linea es mejor hacer una linea desde el principio.
CREATE
[gml]
x1=x
y1=y
x2=x
y2=y
dibujar=true
[/gml]
STEP
[gml]
if mouse_check_button_released(mb_left) {dibujar=false}

if (mouse_check_button(mb_left) and dibujar=true)
  {
   ang=point_direction(x1,y1,mouse_x,mouse_y)
   x2=median(x1, mouse_x, x1+lengthdir_x(200,ang))
   y2=median(y1, mouse_y, y1+lengthdir_y(200,ang))
  }
[/gml]
DRAW
[gml]
draw_line_width(x1,y1,x2,y2,6)
[/gml]

Cuando se presiona con el raton, desde otro objeto se crea el objeto que dibujara la linea con el codigo de arriba.
x1 y1 sera la posicion de inicio, y x2 y2 seran la posicion final mientras se mantenga presionado el boton del raton (controlado por la variable dibujar)
El largo de la linea estara dado por el valor medio entre 3 valores, la posicion inicial (x1 y1), el cursor (mouse_x mouse_y) y el valor 200 pixels (que se dara usando la posicion inicial mas lengthdir_x, lengthdir_y y ang)
Título: Re:dibujar objeto con el dedo
Publicado por: peludo en Octubre 04, 2018, 08:32:34 PM
Si ya consegui crearla a mi gusto, pero no consigo ahora poder darle funciones a esa linea. Me gustaria que una vez que esta dibujada la linea se convierta por asi decir en un objeto solido, que ya puedas añadirles funciones de colision etc...
Título: Re:dibujar objeto con el dedo
Publicado por: HKaichim en Octubre 05, 2018, 01:11:04 AM
Cita de: peludo en Octubre 04, 2018, 08:32:34 PM
Si ya consegui crearla a mi gusto, pero no consigo ahora poder darle funciones a esa linea. Me gustaria que una vez que esta dibujada la linea se convierta por asi decir en un objeto solido, que ya puedas añadirles funciones de colision etc...
Yo habeses creo Objetos invisibles y con la variable "visible true" vuelve a ser visibles cuando yo lo desee, sospecho que lo mismo ocurriria si colocas un boton que comvierta el "solid false;" en "true"
Título: Re:dibujar objeto con el dedo
Publicado por: peludo en Octubre 05, 2018, 01:58:41 PM
Si, pero eso no es la solución.Puede que me haya explicado mal;
Tengo un obj_swipe sin SPRITE, que lo utilizo como el controlador de dibujar la linea.
CREATE

///variables
MouseX = 0;
MouseY = 0;
MouseXStart = 0;
MouseYStart = 0;

Swipe = false;
linea = true;


STEP

if (device_mouse_check_button_pressed(0, mb_left))
    {
    Swipe = true;
    MouseXStart = mouse_x;
    MouseYStart = mouse_y;
   
    //instance_create(MouseXStart,MouseYStart,o_static)
    }

if (Swipe = true)
{
MouseX = mouse_x;
MouseY = mouse_y;
ang=point_direction(MouseXStart,MouseYStart,mouse_x,mouse_y)
MouseX=median(MouseXStart, mouse_x, MouseXStart+lengthdir_x(200,ang))
MouseY=median(MouseYStart, mouse_y, MouseYStart+lengthdir_y(200,ang))
solid = true

    if (device_mouse_check_button_released(0, mb_left))
    {
    Swipe = false;
    //instance_create(MouseX,MouseY,obj_Bat)
    //instance_create(x,y,obj_bridge)
    linea = false;
    }
}
linea = true

DRAW

if linea == true
{
edgeds_draw_sprite(0,0,x,y,0,c_white,0,3,true,1,1);
draw_set_colour(c_black);
draw_line_width(MouseXStart, MouseYStart, MouseX, MouseY,6);
draw_set_halign(fa_left);
draw_set_valign(fa_center);
}


Asi seria mi codigo del objeto, entoces claro una vez que dibujo la linea, no puedo hacer nada con ella(no es un obj), ya que me gustaria que en otro objeto por ejemplo una bola, dija cuando colision con la LINEA haga que rebote....
Título: Re:dibujar objeto con el dedo
Publicado por: Clamud en Octubre 05, 2018, 06:51:31 PM
Adjunto un ejemplo, tal vez te sirve. Usa WASD para mover el círculo y el botón izquierdo del ratón para dibujar líneas.
El código es algo complicado y no está bien comentado.
Una forma más fácil de hacer lo mismo es utilizar física (physics_fixture_set_edge_shape, physics_fixture_set_chain_shape)
Título: Re:dibujar objeto con el dedo
Publicado por: 3dgeminis en Octubre 05, 2018, 09:00:45 PM
Podes usar un sprite de 1 pixel de ancho y 6 de alto para hacer la linea.
Ya sabes como obtener la longuitud(point_distance) y el angulo entre el punto inicial y final(point_direction).
Usas la distancia para escalar el sprite(image_xscale) y el angulo para girar el sprite(image_angle) y ya tenes la linea con mascara de colision.
Asegurate que las propiedades del sprite tenga la mascara colision precisa y automatica.
Título: Re:dibujar objeto con el dedo
Publicado por: JohnWick7 en Octubre 08, 2018, 12:36:05 PM
Es difícil encontrar un trabajo.