Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Trazar un dibujado con el mouse  (Leído 458 veces)

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

Desconectado 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)

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 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

 


Desconectado T789

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



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" ;))
« última modificación: Octubre 09, 2020, 05:05:57 pm por T789 »