Hola GAMEMAKER@S !!
¿Es posible cambiar el tono (color) de pantalla?
Por ejemplo que cada 5 minutos se vaya oscureciendo.
Crea un evento de alarma, dentro de ese evento incrementas una variable que controle el alpha de un sprite completamente negro, por ejemplo
ALARM[0]
[gml]
if (alfa < 1)
{
alfa += 0.2
alarm[0] = room_speed * 300 // 5 minutos
}
[/gml]
DRAW
[gml]
if (oscurecer)
draw_sprite_ext(spr_negro, 0, 0, 0, 1, 1, 0, c_white, alfa)[/gml]
¿Y esto mismo serviria para hacer un ciclo de dia y noche (sencillo)?
¿O sería mejor usar otra técnica mejor? (Si es que hay o me podeis decir)
Serviría, pero obviamente se debe modificar
Considerando un ciclo de día/noche, una manera de hacerlo con 1 alarma sería:
CREATE
[gml]
alfa = 0
duracion_ciclo = room_speed * 600 //10 minutos
alarm[0] =duracion_ciclo
[/gml]
ALARMA[0]
[gml]
alarm[0] =duracion_ciclo
[/gml]
DRAW
[gml]
//Elegir el alfa INICIAL del sprite, dependiendo del valor de la alarma
if (alarma == duracion_ciclo)
alfa = 0 //medio dia, iluminación máxima
else if (alarma == floor(duracion_ciclo/2) )
alfa = 1 //media noche, oscuridad máxima
var incremento;
incremento = 1 / floor(duracion_ciclo/2)
if alarma >= (duracion_ciclo - floor(duracion_ciclo/2) )
alfa += incremento //transicion dia - noche
else
alfa -= incremento //transicion noche_día
//dibujar sprite
draw_sprite_ext(spr_negro, 0, 0, 0, 1, 1, 0, c_white, alfa)
[/gml]
No lo he probado, así que quizás tenga algún error, sin embarg, el método más fácil (el menor código posible) de implementar un ciclo día/noche sería usando la función seno o coseno. Así que eso es mejor que el código que he puesto XD
Efectivamente... hay un error.
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_ciclo:
Push :: Execution Error - Variable Get -1.alarma(100007, -2147483648)
at gml_Object_obj_ciclo_DrawEvent_1 (line 2) - if (alarma == duracion_ciclo){
############################################################################################
¿Alguna idea?
Cita de: djboro88 en Agosto 27, 2015, 01:13:17 PM
Efectivamente... hay un error.
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_ciclo:
Push :: Execution Error - Variable Get -1.alarma(100007, -2147483648)
at gml_Object_obj_ciclo_DrawEvent_1 (line 2) - if (alarma == duracion_ciclo){
############################################################################################
¿Alguna idea?
En realidad es bastane facil, nos dice que no existe la variable "alarma" es "alarm[0]"
en el code de draw va asi
EVENTO DRAW
//Elegir el alfa INICIAL del sprite, dependiendo del valor de la alarma
if alarm[0] ==duracion_ciclo{
alfa = 0 } //medio dia, iluminación máxima
else if (alarm[0] == floor(duracion_ciclo/2) ){
alfa = 1 //media noche, oscuridad máxima
}
var incremento;
incremento = 1 / floor(duracion_ciclo/2)
if alarm[0] >= (duracion_ciclo - floor(duracion_ciclo/2) ){
alfa += incremento } //transicion dia - noche
else{
alfa -= incremento } //transicion noche_día
//dibujar sprite
draw_sprite_ext(spr_negro, 0, 0, 0, 1, 1, 0, c_white, alfa)
Así funciona bien...
Te dejo un ejemplo para que lo verifiques tu mismo
Espero que te sirve, si alguna cosa me avisas...
Funciona perfecto. :D
Ahora solo quedaría buscar o interpretar los colores de la luz (dia y noche), para que dichos cambios sean más reales.