Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Klind en Febrero 20, 2013, 07:55:19 PM

Título: Detectar ruta dibujada [SOLUCIONADO]
Publicado por: Klind en Febrero 20, 2013, 07:55:19 PM
Buenas tardes gente, me he vuelto a trancar y vuelvo a recurrir a ustedes, que siempre saben ayudar.

(VEAN LA IMAGEN)

Tengo un personaje el cual, para moverlo, le dibujo una ruta (flecha negra) con el mouse.

Para que el personaje se mueva hay que darle SPACE luego de dibujar la flecha.

EL PROBLEMA: Yo necesito que el cursor detecte el área que marqué en rojo para uno hacer click y colocar una acción en ese punto de la ruta.

Se me ocurrió hace un collision_rectangle que se dibuje en la misma forma en la que dibujé el rectangulo rojo en la imagen pero no se cómo hacer para dibujarlo siempre en esa posición con respecto a la flecha.

Otra cosa que se me ocurrió fue que la ruta sea un objeto en vez de un draw_arrow, pero no se cómo hacer eso tampoco.

Espero me puedan ayudar, gracias de antemano...  :-[
Título: Re:Detectar ruta dibujada
Publicado por: elviskelley en Febrero 20, 2013, 09:48:14 PM
Eso es mas facil que comerciales jajaja, solo bromeo.
mira te creas un object llamalo objNose jajaja, con un sprite de 1x1 pxl osea un punto.
ahora en otro object puede ser el personaje o el que sea que este en el room, le agregas esto:
Event create
x1=0; x2=0;
y1=0; y2=0;

//solo declara dos variable para x,y.

event global mouse left pressed
instance_create(x,y,objNose)
//osea cree el punto.

Event global left (sin el pressed)
if instance_exists(objNose)
{
x1=objNose.x; y1=objNose.y
}
//practicamente guardo en las var x1,y1. la posicion donde inicialmente presionaste el mouse.

Event mouse released left
x2=mouse_x; y2=mouse_y;
if instance_exists(objNose)
{with(objNose){instance_destroy();}}
Ahora como podes ver tenes las cuatro coordenadas exactas de cuanto hiciste click la primera vez con el mouse
y cuando soltaste el boton del mouse, ahora solo usa el collision rectangle con esas 4 coordenadas.
Título: Re:Detectar ruta dibujada
Publicado por: Klind en Febrero 20, 2013, 10:11:15 PM
Hola Elvis!
Ya solucioné el problema hace unos minutos así:

Creé un obj_camino de 1 pixel de ancho, por 20 pixeles de alto (ver imagen 1).

Este objeto camino se crea en la posición x,y del obj_personaje cuando suelto el boton left del mouse (es decir, cuando termino de dibujar el camino) y tiene el siguiente código en el evento Create:

image_angle=point_direction(x,y,mouse_x,mouse_y)
image_xscale=point_distance(x,y,mouse_x,mouse_y)


Con eso, la ruta queda dibujada como ves en la imagen 2.

NOTA: La parte blanca de la ruta la uso como mascara de colision y va invisible, la puse blanca para explicarte mejor.

Igualmente muchas gracias por tu ayuda hermano!