Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: dibujar objeto con el dedo  (Leído 374 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 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
Código: [Seleccionar]
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!!

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 en: Octubre 02, 2018, 07:59:04 pm
Si al final sera una linea es mejor hacer una linea desde el principio.
CREATE
x1=x
y1=y
x2=x
y2=y
dibujar=true
STEP
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))
  }
DRAW
draw_line_width(x1,y1,x2,y2,6)

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)

 
Los siguientes usuarios dieron las gracias a este tema: Johann, Yuzo


Desconectado peludo

Respuesta #2 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...

 


Desconectado HKaichim

Respuesta #3 en: Octubre 05, 2018, 01:11:04 am
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"

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado peludo

Respuesta #4 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
Código: [Seleccionar]
///variables
MouseX = 0;
MouseY = 0;
MouseXStart = 0;
MouseYStart = 0;

Swipe = false;
linea = true;

STEP
Código: [Seleccionar]
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
Código: [Seleccionar]
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....

 


Desconectado Clamud

Respuesta #5 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)

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado 3dgeminis

Respuesta #6 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.

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado JohnWick7

  • Visitante
  • *
  • Puntos: 4
  • Mensajes: 1
    • Ver Perfil
Respuesta #7 en: Octubre 08, 2018, 12:36:05 pm
Es difícil encontrar un trabajo.