Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Iros en Septiembre 06, 2013, 01:12:39 AM

Título: [SOLUCIONADO] Degradado
Publicado por: Iros en Septiembre 06, 2013, 01:12:39 AM
Soy molesto, lo se  :)

Ahora bien, mi (nuevo) problema es que necesito hacer una transición entre 3 colores, es decir de pasar de blanco a azul y de azul a blanco. Estuve buscando por acá y por GMC y no encontré nada similar a lo que busco. Me explico, quiero dibujar una circunferencia que tenga esos colores en los bordes para que de un efecto más sofisticado, se "como" hacerlo pero a la vez no. Me explico, se que tengo que hacer un for dependiendo de los colores que vaya a usar, pero no se como aplicar make_color_rgb o make_color_hsv en transición ya que para el primero no es lineal para todos los colores y mucho el tema no se me da, y el segundo directamente ni se como se usa.

No pido que me den las cosas ni nada, si no que me tiren una mano para encaminarme en el tema.

Desde ya, muchas gracias :D
Título: Re:[AYUDA] Degradado
Publicado por: Texic en Septiembre 06, 2013, 02:01:36 AM
Deberías usar el hsv, calculás los valores H S V de cada color y según la mezcla entre ambos hacés un promedio entre los valores, luego creas el color con los promedios y voilá
Título: Re:[AYUDA] Degradado
Publicado por: Iros en Septiembre 06, 2013, 05:18:39 AM
Hice este intento de script, pero al ejecutarlo como que no le da el color o.O

[gml]//argument0 = x
//argument1 = y
//argument2 = radio
//argument3 = color
//argument4 = cantidad de círculos
var __div,__div1,sat;
__div=0;__div1=0;sat=200;

__div = (20/argument4)*1.05;
__div1 = sat-(sat /__div);
   
for (i=0;i<=argument4;i+=1) {
    if (i < argument4) {
        draw_circle_color(argument0,argument1,argument2-i,make_color_hsv(argument3,240,sat),-1,1);
        sat = sat - __div1;
    } else if (i >= argument4/2) {
        draw_circle_color(argument0,argument1,argument2-i,make_color_hsv(argument3,240,sat),-1,1);
        sat = sat + __div1;
    }
}[/gml]

¿Qué puede estar fallando?
Título: Re:[AYUDA] Degradado
Publicado por: Texic en Septiembre 06, 2013, 05:25:40 AM
Explicate con un gráfico hecho en paint sobre lo que querés hacer porque no se entendió nada el script xD
Título: Re:[AYUDA] Degradado
Publicado por: Iros en Septiembre 06, 2013, 05:33:25 AM
Te dejo una imagen googleada xD

http://img.wallpaperstock.net:81/neon-art-wallpapers_34630_1920x1200.jpg

La cosa es que quiero que el color del contorno del círculo pase de más oscuro a claro para luego volver a oscurecerse (en el código me confundí y lo hice de más claro a más oscuro xD).

Con el for listo la cantidad de círculos que quiere el usuario, luego pongo el primer condicional para saber si la cuenta de i es menor que los circulos totales (aunque tendría que ser menor a la mitad) y entonces uso el draw_circle_color para crear los diferentes círculos. El problema viene que la función make_color_hsv no cambia de color ni nada, no hace nada!, se queda con el valor en blanco :S
Título: Re:[AYUDA] Degradado
Publicado por: Texic en Septiembre 06, 2013, 06:05:28 AM
Deberías fijarte cómo funciona el HSV (hue, saturation, value), que representan el tono de color, la saturación y el valor de iluminación (128 sería color puro). No sería más conveniente hacerlo con distintos alpha? Digo por la ilustración que me pasaste, a lo mejor entendí mal
Título: Re:[AYUDA] Degradado
Publicado por: Iros en Septiembre 06, 2013, 05:59:43 PM
El problema está en que cuando uso la función make_color_hsv no hace nada, por más que le ponga un celeste, rojo, amarillo, verde o lo que sea (sacando los valores de paint xD). Lo probé con ese script que hice y nada, lo puse en la función de draw y nada. ¿Qué puede estar pasando que no lo colorea correctamente?

[EDIT]

El problema es que yo modificaba el color del centro y no del borde, el col2 es el borde, no el col1 xD

Ya lo solucioné el problema, no me quedó como yo quería pero se ve mejor de esta forma :D

Acá adjunto una imagen del efecto:

http://s2.subirimagenes.com/imagen/8608098image.png

[SOLVED]