Creo q este es un tema que le puede intersar a muchos ( y a mi), y es, como hacer un efecto de dia y de noche?
o, como cambiar los colores del background poco a poco, no de manera
repentina.


Yo trate de hacer este efecto con tan solo 4 colores:
-dia
-anochecer
-noche
-amanecer, y denuevo dia

pero me quedo muy repentino el cambio de colores,
asi q i algien sabe hacerlo con un codigo o algo que haga q un color vaya cambiando de a poco, que me lo explique!  :-[
gracias de antemano!!  :D :D :D :D

#1 Mayo 22, 2010, 03:02:13 AM Ultima modificación: Mayo 22, 2010, 03:04:15 AM por cristalbeast
mmmm... pues aun no lo he aplicado pero esta es mi idea que pensaba usar en mi juego.

En el evento step de un objeto que sea permanente, dibujar 2 rectangulos de diferentes colores y de diferente alpha al mismo tiempo.

Un rectangulo azul o negro(efecto de noche)
Un rectangulo amarillo o rojo(efecto de d?a)

Los rect?ngulos solo se dibujan del tama?o del view.

Y por ejemplo, si te basas en la hora de la PC puedes utilizar current_hour
No lo he probado pero creo que basta con poner:

if(current_hour<=12)
   {
   draw_set_alpha(current_hour*.041)
   }
else
   {
   draw_set_alpha(0.5-(current_hour-12*.041))
   }
draw_rectangle_color(view_xview,view_yview,view_hview,view_wview,c_black,c_black,c_black,c_black,false)


if(current_hour>=12)
   {
   draw_set_alpha(current_hour-12*.041)
   }
else
   {
   draw_set_alpha(0.5-(current_hour*.041))
   }
draw_rectangle_color(view_xview,view_yview,view_hview,view_wview,c_orange,c_orange,c_orange,c_orange,false)
draw_set_alpha(1)


Si te funciona y quieres modificarlo para acoplarlo a tu proyecto, dime para explicartelo (si no le entiendes).

usa un sprite con varias subimagenes, y que la scala del sprite sea 5, image_xscale=5; image_yscale=5; y la transparencia sea 0.3 image_alpha=0.3; y que tenga un valor negativo muy alto -99999 depth=-99999; que la velocidad de cambio de sub imagenes sea de 0, image_speed=0;  y ahora segun las condiciones de la hora de cambio sea por la hora de la pc, o alguna que establescas, solo cambias de sub imagen. image_index=1;

no se mucho de scripts, pero no se podria hacer sin la hora del PC, si no con un tiempo inventado en el juego (ej: 2 min cada dia)???

gracias por responder

Aprovecho para decir que esto me interesa a mi tambi?n, a ver si alguien responde^^

#5 Mayo 22, 2010, 07:40:33 PM Ultima modificación: Mayo 22, 2010, 07:44:58 PM por Texic
Copien esto en el draw de un objeto con depth -99999 o similar
if current_hour<17 and current_hour>7
{
color=make_color_hsv(170,230,150)
if current_hour=8 {color=make_color_hsv(170,230,40)}
if current_hour=9 {color=make_color_hsv(170,230,80)}
if current_hour=10 {color=make_color_hsv(170,230,120)}
if current_hour=11 {color=make_color_hsv(170,230,140)}
if current_hour=13 {color=make_color_hsv(170,230,140)}
if current_hour=14 {color=make_color_hsv(170,230,120)}
if current_hour=15 {color=make_color_hsv(170,230,80)}
if current_hour=16 {color=make_color_hsv(170,230,40)}
draw_set_blend_mode(bm_subtract)
draw_set_color(color)
draw_rectangle(0,0,room_width,room_height,0)
draw_set_blend_mode(bm_normal)
}
else
{
color=make_color_hsv(30,200,200)
if current_hour=17 {color=make_color_hsv(30,200,0)}
if current_hour=18 {color=make_color_hsv(30,200,40)}
if current_hour=19 {color=make_color_hsv(30,200,80)}
if current_hour=20 {color=make_color_hsv(30,200,120)}
if current_hour=21 {color=make_color_hsv(30,200,160)}
if current_hour=3 {color=make_color_hsv(30,200,160)}
if current_hour=4 {color=make_color_hsv(30,200,120)}
if current_hour=5 {color=make_color_hsv(30,200,80)}
if current_hour=6 {color=make_color_hsv(30,200,40)}
if current_hour=7 {color=make_color_hsv(30,200,0)}
draw_set_blend_mode(bm_subtract)
draw_set_color(color)
draw_rectangle(0,0,room_width,room_height,0)
draw_set_blend_mode(bm_normal)
}

Es lo que pude hacer, si quieren lo modifican, si les parece muy brusco el cambio
Saludos
Suerte




me gusto mucho el efecto, pero no sabes como hacerlo con steps del game maker, osea, q no coincida con la hora real, si no q cada dia y noche duren mucho menos (ejemplo 2 minutos  XD) ??

gracias por el script de todas formas  ;) ;) ;) ;) ;) ;) ;) ;)

?Recuerdas cuando el profe de mate te dijo que alg?n d?a necesitarias lo que te estaba ense?ando?

2 minutos = 120 segundos
1 d?a = 24 hora

120/24 = 5

1 dia en 2 minutos = 1 hora en 5 segundos

Simplemente crea una variable donde tener la hora, modificala cada 5 segundos y usala en lugar de current_hour.

por que no creas tu propia variable que represente el tiempo?

que aumente en uno por step

WOW! no se me habia ocurrido, y si, si me acuerdo cuando el profe me decia eso  XD XD XD.
bueno, el script me funciono perfecto , me encanto el resultado, a si que gracias a todos los q aportaron!!!   :-[