Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: mamaffia en Julio 05, 2014, 10:10:05 PM

Título: Flecha que indique donde va a ir el proyectil
Publicado por: mamaffia en Julio 05, 2014, 10:10:05 PM
Hola a todos, estoy hace un rato largo buscando info de como se hace esto pero no consigo y en la comunidad tampoco encontré nada al respecto, el tema es así, necesito hacer que se dibuje una flecha hacia el lado que va a salir disparado un proyectil, en mi caso estoy usando impulso de física, por lo cual debería dibujarse la flecha en sentido contrario a la posición del mouse, como ejemplo puedo poner el juego shoot the birds que es uno de los pocos donde he visto este efecto, agradezco mucho cualquier tipo de ayuda. Saludos
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: penumbra en Julio 05, 2014, 10:33:33 PM
Cita de: mamaffia en Julio 05, 2014, 10:10:05 PM
por lo cual debería dibujarse la flecha en sentido contrario a la posición del mouse

Si el mouse está en la posición (100, 100), ¿cuál es el sentido contrario de esa posición?

Más que la posición del mouse, lo que necesitas es calcular la dirección del puntero respecto del punto de disparo y a esa dirección sumarle 180°, esa sería la dirección de la flecha
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: mamaffia en Julio 05, 2014, 11:06:33 PM
Hola Penumbra, antes que nada gracias por contestar. Exactamente, es así como decís pero no sé como hacerlo, al hacer click con el mouse sobre el objeto que lanza el proyectil y arrastrar hacia una dirección el proyectil sale hacia el lado contrario, no sé si me explico, eso es lo que estoy haciendo con la función physics_apply_impulse (x,y,(x-mouse_x), (y mouse_y), lo que yo necesitaría hacer sería que se dibuje una flecha hacia el lado que va a salir el proyectil y lo único que logro hasta ahora poniendo draw_arrow(mouse_x,mouse_y,x,y,12) es que se dibuje la flecha pero desde el objeto hacia atrás, o sea, hacia donde estoy pulsando para darle el impulso, espero haber sido claro, el efecto exacto es el del conocido juego shoot the birds, algo así sería perfecto, en algo le estoy errando. Mil gracias!
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: penumbra en Julio 05, 2014, 11:50:49 PM
Cita de: mamaffia en Julio 05, 2014, 11:06:33 PM
espero haber sido claro, el efecto exacto es el del conocido juego shoot the birds, algo así sería perfecto, en algo le estoy errando.

NO has calculado ninguna dirección. ¿Cuál es el ángulo del puntero respecto del objeto de disparo? Sin conocer ese ángulo, no se puede "voltear" la flecha. Pista: point_direction  ;)

EDIT: Dejo un ejemplo, ojalá encuentres la solución sin verlo.
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: mamaffia en Julio 06, 2014, 01:27:30 AM
Jaja, te soy sincero, lo primero que quise hacer fue abrir el ejemplo pero me da un error "exception reading assets from GMXfile..." Así que voy a tratar de decifrarlo con la pista, igual estaría bueníiisimo tener el ejemplo que seguro esta recontra claro. Un abrazo y muchas gracias por tu ayuda...
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: penumbra en Julio 06, 2014, 02:38:50 AM
qué raro, lo he abierto tanto con la versión 1.3 como con la early access más reciente y abre perfecto. quizás tu gms sea una versión algo vieja
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: elviskelley en Julio 06, 2014, 03:18:40 PM
event create
xx=0; yy=0;

Event mouse left pressed
xx=mouse_x; yy=mouse_y;
//guarda la posicion donde se hizo el primer click.

var dist;
dist = (point_direction(xx,yy,mouse_x,mouse_y)+180 mod(360));
// dist guarda la posicion contraria al mouse en grados.

ahora solo usas un sprite y usas dist para el angulo.
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: mamaffia en Julio 07, 2014, 02:00:30 AM
Perdón pero realmente estoy hace horas y no puedo hacerlo. En un juego que no usa físicas y solo dispara desde un punto (ejemplo, un arco) sí puedo hacerlo así
draw_sprite_ext (spr_flecha, -1, obj_arcoflecha.x, obj_arcoflecha.y,obj_parabarra.velfle/20,1,obj_arcoflecha.image_angle, c_yellow, 0.3)
pero en un juego de físicas donde podes agarrar cualquier cosa de la room para darle impulso no puedo hacerlo ya que se me presentan otras dificultades, en este caso son pelotas, no tienen ángulo, hay muchas en la room, etc.
imaginé que era fácil, pero veo que no, lo que necesito es una flecha que se aleje o se agrande a medida que me alejo del objeto seleccionado para lanzarlo, o sea, mienstras le estoy dando el impulso. supongamos, con el botón derecho del mouse hago click en una pelota y mantengo apretado mientras me alejo unos centímetros para darle el impulso, al mismo tiempo necesito que justo para el lado que va a salir impulsada (opuesto al mouse) se forme una flecha, línea o lo que sea, para el caso da igual, y al soltar la pelota sale en esa dirección y la flecha desaparece, si a alguien se le ocurre alguna forma de hacerlo o tiene algún ejemplo realmente le voy a estar muy agradecido.
Título: Re:Flecha que indique donde va a ir el proyectil
Publicado por: elviskelley en Julio 28, 2014, 06:05:50 PM
lo unico que debes hacere es usar el cogido que te di arriba y usas tu mismo event draw pero donde imagen_angle colocas la var dist ejemplo
draw_sprite_ext (spr_flecha, -1, obj_arcoflecha.x, obj_arcoflecha.y,obj_parabarra.velfle/20,1,dist, c_yellow, 0.3)