Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: NU597 en Noviembre 07, 2019, 12:05:54 AM

Título: Quiero volver a pedir su ayuda.
Publicado por: NU597 en Noviembre 07, 2019, 12:05:54 AM
Alguien sabe como hacer trancisiones al estilo SMW?

algo como sale en la imagen
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: kostra en Noviembre 07, 2019, 03:53:53 PM
Manera fácil.

dibujas un sprite GIGANTE todo negro con el centro de círculo. Lo pones en un objeto y en cada step lo vas poniendo más pequeño con image_xscale/image_yscale

Manera más dificil, con surfaces, pero eso yo no sé explicarte, esperemos el siguiente mensaje, será lo mejor xD
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: NU597 en Noviembre 07, 2019, 05:59:49 PM
Mala idea. por que eso genera memoria. en un sprite.
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: Arcadian en Noviembre 07, 2019, 07:30:19 PM
Cita de: NU597 en Noviembre 07, 2019, 05:59:49 PM
Mala idea. por que eso genera memoria. en un sprite.
Sí, amigos, porque los sprites, al igual que ocurre con los elefantes, tienen memoria.

Coincido con Kostra, yo lo haría igual.
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: Johann en Noviembre 07, 2019, 08:37:23 PM
Esa solucion que plantean es como la forma "chapucera" XD pero si se hace con surfaces se gastaría mas memoria y mas procesamiento, entonces Si es mejor la chapuza jajajaja
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: NU597 en Noviembre 07, 2019, 09:03:09 PM
Alguien que sepa porfavor y no sea con la solucion de un sprite gigante porfavor. ayuda .v
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: Johann en Noviembre 07, 2019, 09:18:15 PM
Creo que tu solucion ideal es esta: https://www.comunidadgm.org/desarrollo-de-scripts/dibujar-anillosdonasredondelas-huecas/

Pones el radio exterior equivalente a la distancia que hay entre el centro de la pantalla y la esquina superior izquierda (puede ser cualquier esquina), y en cada step vas reduciendo el radio interior hasta que llegue a un valor pequeño como 0 o 1.
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: NU597 en Noviembre 08, 2019, 12:45:26 AM
Cita de: Johann en Noviembre 07, 2019, 09:18:15 PM
Creo que tu solucion ideal es esta: https://www.comunidadgm.org/desarrollo-de-scripts/dibujar-anillosdonasredondelas-huecas/

Pones el radio exterior equivalente a la distancia que hay entre el centro de la pantalla y la esquina superior izquierda (puede ser cualquier esquina), y en cada step vas reduciendo el radio interior hasta que llegue a un valor pequeño como 0 o 1.

bueno. por que no pasan un GMK para comprobar si funciona el codigo?
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: getnoff en Noviembre 08, 2019, 03:48:25 PM
Vamos compañero, no cuesta nada comprobar un script por tu cuenta e intentar entender cómo trabaja.

Piensa en lo siguiente: en el mundo de la programación existen miles y miles de trucos, efectos y formas de hacer las cosas, por lo que es imposible poder siempre encontrar ejemplos precisos para lo que uno busca hacer (y que además sea compatible con tu juego). Entonces la mejor forma de aprender es investigando conceptos, en este caso por ejemplo de ¿qué son las surfaces y cómo trabajan? o ¿cómo se utilizan los scripts?

Y una vez que entras en el mundo, aprenderás y si tienes dudas de algo en específico, puedes preguntarlas.

Y por último, no pusiste qué versión de game maker usas, como mencionas gmk parece que usas gm8 así que el script que te dieron quizás ni siquiera sea compatible, como ves es de gran importancia ser específico para poder ayudarte mejor.
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: BssString en Noviembre 10, 2019, 02:51:48 AM
Hola NU597

No sé si este tema está resuelto o no.
Yo hago transiciones con Shader usando una imagen en escala de grises, eso te permite generar transiciones de diferentes formas con el mismo código, así como las transiciones de batalla en los juegos de Pokémon.
En este link puedes encontrar cómo realizar esa técnica: https://gdpalace.wordpress.com/2017/10/07/transitions/

Si no estás acosumbrado a las Shader, otra alternativa más simple puede ser usar Surfaces.

Para lograr el efecto usando Surfaces:
Crea un nuevo objeto para la transición.
En su Create Event pone:
surface = surface_create(room_width,room_height) //Si usas Views(GMS1.4)/Cameras(GMS2), deberás usar esas dimensiones en vez de las de room.
fade = 1//Esta variable controla el tamaño del círculo transparente. 1 significa que el agujero cubre toda la pantalla (todo se ve normal), 0 significa que el agujero ya se cerro por completo (se ve todo negro)


En su Stem Event pones esto:
if fade > 0 {
fade = max(0,fade-0.02) //Esto reduce el tamaño del círculo, impidiendo que pase bajo del cero.
if fade = 0 alarm[0] = room_speed //Si ya llegó a cero, esto asigna un retardo de 1 seg para eliminar la transición
}


En el Evento Alarm0 pones:
instance_destroy() //Esto destruye el objeto y la transición, también puedes colocar cualquier efecto post-transición, como ir a otra room o terminar el juego o lo que quieras

Aquí es donde ocurre la magia:
En el Draw Event pones:
if !surface_exists(surface) surface = surface_create(room_width,room_height) //Simplemente re-crea la surface en caso que se haya borrado por minimizar el juego
surface_set_target(surface) //Asigna el foco a esta surface para dibujar en ella.
draw_clear(c_black) //Pinta la surface de un fondo color negro (lo más importante es que asigna el alpha a 1 para ser invertido en el blend mode)
draw_set_blend_mode_ext(bm_inv_src_alpha, bm_inv_src_alpha); //Cambia el Blend Mode para los futuros dibujos. Es un poco enredada la explicación técnica que hay
detrás, pero básicamente para todos los nuevos dibujos: si hay color, ahora dibuja un agujero, si hay partes transparentes, entonces conserva el color de abajo del fondo negro como normalmente se dibujaría algo con alpha.
//En GMS2 es: gpu_set_blendmode_ext
var radio = fade*sqrt(power(room_width/2,2)+power(room_height/2,2)) //Esto es pitágoras, puedes usar la función point_distance() también. Calcula la distancia desde el centro de la pantalla hasta una esquina para saber qué tan grande debe ser el círculo de forma que cubra toda la pantalla, ese valor se multiplica por fade, a medida que fade se reduce, el tamaño del círculo también.
draw_circle(room_width/2,room_height/2,radio,false) //Esto dibuja el círculo, pero por efecto del blend mode, en vez de eso dibujará un agujero del porte de la pantalla xD que se irá haciendo cada vez más pequeño según la variable "radio"
draw_set_blend_mode(bm_normal); //Resetea el blend mode.
surface_reset_target() //Resetea el focus en la surface para ahora dibujar en la "Application Surface"
draw_surface(surface,0,0) //Dibuja la surface en la coordenada 0,0 de la room, si usas "view" (GMS1) o "cameras" (GMS2) deberás usar las coordenadas X e Y.


Para que se vea el efecto, tienes que dibujar este objeto de transición en alguna layer encima de todo lo demás, sino no te servirá.

Con este método, si usas un sprite escalado, puedes hacer que en la transición en vez de un círculo se vea una forma diferente cerrándose, ej: el sombrero de mario o el honguito o la estrella, etc. lo importante es que lo escales bien para que te cubra justo toda la pantalla cuando "fade" es 1.

Saludos
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: jhgv en Noviembre 11, 2019, 08:12:49 PM
Cita de: kostra en Noviembre 07, 2019, 03:53:53 PM
Manera fácil.

dibujas un sprite GIGANTE todo negro con el centro de círculo. Lo pones en un objeto y en cada step lo vas poniendo más pequeño con image_xscale/image_yscale

Manera más dificil, con surfaces, pero eso yo no sé explicarte, esperemos el siguiente mensaje, será lo mejor xD

JAJAJAJAJAJ ME ENCANTAS! xD ya te eh visto hacer esto varias veces, la otra vez dijiste que para un cuadro con scrollbar le ponías la textura del fondo para ocultar el texto 😂😍
Título: Re:Quiero volver a pedir su ayuda.
Publicado por: elviskelley en Noviembre 12, 2019, 10:55:58 AM
ESTE POTS VIOLA EL REGLAMENTO (EL TITULO DEBE SER DESCRIPTIVO) PUDISTE COLOCAR ALGO COMO; 'TRANSICIONES DE ROOM

Volviendo a tu pregunta, podrias usar un background o sprite con un tamaño de 32x48  y dibujarle el circulo en el medio,  Aumentar su tamaño tanto como la view sea, y reducirlo, no es nada dificil... y no consume muchos recursos de esa manera.,