Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: pucara en Febrero 16, 2014, 06:16:06 PM

Título: Saturar color a un sprite
Publicado por: pucara en Febrero 16, 2014, 06:16:06 PM
Hola Comunidad,

Volviendo al ruedo del desarrollo eventual de juegos, se me presenta una nueva pregunta. A ver si alguien me puede ayudar.

Quiero lograr un efeecto de fundido ó saturación: desde blanco a los colores por defecto del sprite, he probado con:

image_blend=make_color_hsv(x,x,x);

y con:

image_blend=make_color_rgb(x,x,x);

donde "X" son valores desde 0 a 255, pero no logro lo que quiero.

Gracias de antemano amigos  8)

Título: Re:Saturar color a un sprite
Publicado por: vampy09 en Febrero 16, 2014, 07:15:39 PM
Algo como esto:
Primero creamos un script y lo nombramos scr_color

//argument0 es la cantidad maxima
//argument1 es la cantidad actual

var colcolcol;
colcolcol=255/argument0*argument1
return make_color_rgb(colcolcol,colcolcol,
colcolcol);

Este script retorna un color de entre blanco y negro. Esto puede ser modificado o tu necesidad.

Ejemplo de uso:

draw_sprite_ext(sprite_index,image_index,x,y,1,1,0,scr_color(100,health),1);

Esto hace que entre mas health baje, el sprite se vuelva mas oscuro.
Saludos !
Título: Re:Saturar color a un sprite
Publicado por: pucara en Febrero 16, 2014, 10:34:08 PM
He intentado implementar tu script, pero sin resultados positivos..., realmente lo que necesito es que un sprite aparezca totalmente blanco y paulatinamente vaya tomando sus colores originales.¿Alguna otra sugerencia?

Gracias por tu ayuda vampy  8)
Título: Re:Saturar color a un sprite
Publicado por: penumbra en Febrero 16, 2014, 10:52:54 PM
Creo que el blanco no se puede usar con image_blend.

Probablemente yo necesite hacer lo mismo en mi juego. Buscando en GMC, encintré este ejemplo con "truco", en donde usan la función fog

draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);

if (flashWhite) {
  d3d_set_fog(1, c_white, 0, 0);
  draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, c_white, image_alpha);
  d3d_set_fog(0, c_white, 0, 0);
}


Ahi mencionan algo interesante que no sabía. Las funciones d3d se pueden usar en 2D, aunque no se comportan igual porque no hay un buffer de profundidad y la proyección es distinta.  Así que puedes usar el código de arriba en tu juego 2D, usando una función para 3D.

No lo he probado y no sé qué tal funcione, probablemente jugando con el alpha controles qué tan blanco se ve.
Título: Re:Saturar color a un sprite
Publicado por: pucara en Febrero 16, 2014, 11:36:08 PM
Gracias penumbrita  :D  en cuanto lo pruebe te digo algo,