Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: T789 en Octubre 05, 2020, 11:35:08 pm

Título: Trazar un dibujado con el mouse
Publicado por: T789 en Octubre 05, 2020, 11:35:08 pm
Saludos makeros

Estoy trabajando en un juego que seria una implementacion de mecanicas entre:
-PointAndClick
-Survival Horror
-Accion

Antes de trabajar en lo demas, quisiera trabajar en un sistema de pelea unica, y se me ocurrio un tipo de sistema el cual seria un objeto de onda que empezara pequeño y fuera creciendo hasta un punto, del cual retrocederia hasta ser tan pequeño y volver a aparecer en otro punto aleatorio de la pantalla.

El objeto de onda para atacar, solo estaria limitado de la mitad de la pantalla para abajo, y para arriba solo se mostraria al enemigo acercandose
/// Event Create obj_enemyBatle
Owidth = sprite_get_width(spr_onda)/2;
Oheight = sprite_get_height(spr_onda)/2;

mionda = instance_create(irandom_range(Owidth, room_width-Owidth), irandom_range(room_height/2 + Oheight, room_height-Oheight), obj_ondaAtack)
Ya casi tengo todo el sistema de onda para atacar, pero hay un incomveniente... No se como lograr para atacar

La forma que tengo en mente para atacar, requiere en trazar un dibujado mientras dejo oprimido el boton izquierdo del mouse; para que se muestre el trazado solo uso un objeto de color rojo con 1 pixel de ancho y largo. El problema en si, esta en que solo se puede crear instancias de color si el mouse va lento (cuando digo lento, me refiero a casi tocar el mouse)

No encuentro una forma de poder trazar un dibujo pues el mouse siempre va muy rapido, y me disgusta que aquel que vaya probar el juego tenga que estar forzado a llevar lento el mouse; lo intente todo desde usar bucles para crear instancias precisamente, pero como sucede que el trazado siempre se tiene que crear en el mouse nunca funciona

Ahora, quisiera pedir su ayuda para saber como trazar un dibujo preciso sin tener que preocupar por como se lleve el mouse

La idea esta en cuando el efecto de onda detecte una instancia de dibujo, se vuelva a crear en otra parte aleatoria y le descuente una vida hasta ser destruido junto con su enemigo (tambien se borraria el trazado automáticamente)
Título: Re:Trazar un dibujado con el mouse
Publicado por: BssString en Octubre 08, 2020, 02:58:24 am
Hola T789

No pude imaginarme bien lo que intentas lograr, pero aquí va una sugerencia:
Puedes usar una DS_List para guardar las coordenadas del mouse en cada step (desde el primero al último)
Para el dibujo lo puedes hacer con un ciclo "for", que recorra la lista y dibuje los puntos en pantalla como líneas con el draw_line (para que haga la figura completa que dibujaste)
Y para la colisión, en el Step puedes hacer quizás un collision_line entre cada punto para ver si alguna parte del trazo hizo colisión con la onda o no. No sé que tan ineficiente sea ese sistema, supongo que con un montón de puntos se comenzaría a lagear.

Si sueltas el mouse, puedes limpiar la lista para eliminar los puntos y el trazo.

Al destruir el objeto o terminarse el juego, debes asegurarte de destruir la DS_List para liberar los archivos almacenados en el CACHE.

Saludos
Título: Re:Trazar un dibujado con el mouse
Publicado por: T789 en Octubre 09, 2020, 05:04:26 pm
Gracias por la sugerencia. Tuve que hacer algunas cosillas extras pero igual funciono correctamente. Por cierto cuando dijiste que no podias imaginartelo correctamente, creo que tenias razon, a veces no suelo expresarme perfecto cuando trato de describir una idea; mejor lo hago con una imagen aclaratoria:

(https://www.comunidadgm.org/preguntas-y-respuestas/trazar-un-dibujado-con-el-mouse/?action=dlattach;attach=18908)

Tambien queria preguntar ¿si no habia una forma mas suave para intercalar los puntos entre lineas? Pues noto que algunos puntos (especificamente los ultimos puntos) suelen lagearse o no calcular muy bien las aproximaciones cercanas del mouse. Pero de paso las listas funcionaron bien ("me pregunto como se verian las lineas, si GameMaker gestionara vectores" ;))