Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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: Colorizar un sprite a negro poco a poco  (Leído 291 veces)

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

Desconectado T789

en: Agosto 06, 2020, 03:46:42 pm
Saludos makeros, tengo una duda que todavia np he planteado y es: como puedo colorizar una imagen poco a poco a un colorar, no necesaria mente tiene que ser negro.

Veran conozco como reducir y aumentar el alpha y ahora quisiera aprender a colorizar un sprite (empezando por negro); normal lo hago simple con el alpha
if (hurt == maxhurt)
   alpha = max(0.4, alpha-0.025);
if (hurt == minhurt)
   alpha = max(0.65, alpha-0.05)
Eso funciona muy bien para reducir el alpha segun el daño pero ahora lo que quiero es colorizarlo poco a poco y desafortunadamente la variable image_blend solo lo hace de una forma image_blend = c_black; y sumandole, no creo que funcione

Asi que quisiera solo colorizarlo al igual que con el alpha, nose algo parecido a la opcion de "intensity" en el editor de sprite  ???

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Tylag

Respuesta #1 en: Agosto 06, 2020, 08:13:45 pm
Hola,
Para tu caso una posible solución es usar un shader, hay un shader gartuito en el market de yoyogames que te permite configurar el hue de sprites/backgrounds, etc.. https://marketplace.yoyogames.com/assets/2482/hue-shader

Por lo contrario si no quieres complicarte con shaders o usas una version antigua otra posible opción es usar:

image_blend = make_color_hsv(0,0,value);
http://docs.yoyogames.com/source/dadiospice/002_reference/drawing/colour%20and%20blending/make_colour_hsv.html

En este caso el 0,0,0 (Tono, Saturacion, Valor) corresponde al negro, si juegas con el value puedes hacer que vaya transicionando en la escala de grises.
Edit: el valor tendras que moverlo entre el 0 y el 255.
El resultado seria algo asi:


Hay otras opciones un poco mas espartanas, como dibujar encima del propio sprite uno igual e irle sumando y bajando el alfa, etc.. pero no lo veo muy aconsejable.

Un saludo!
« última modificación: Agosto 06, 2020, 08:22:52 pm por Tylag »

 


Desconectado T789

Respuesta #2 en: Agosto 06, 2020, 08:45:00 pm
Gracias por la sugerencia, no conocia esa funcion de GameMaker, bueno claro tendre que usarla en el evento draw para no hacerlo en todos los sprites
var shadow;
shadow = make_color_hsv(0, 0, fs);
draw_sprite_ext(spr_live, 0, x, y+8, 1, 1, 0, shadow, 1)