Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: djboro88 en Agosto 26, 2015, 06:57:33 PM

Título: [SOLUCIONADO] Cambiar tono de pantalla
Publicado por: djboro88 en Agosto 26, 2015, 06:57:33 PM
Hola GAMEMAKER@S !!

¿Es posible cambiar el tono (color) de pantalla?
Por ejemplo que cada 5 minutos se vaya oscureciendo.
Título: Re:Cambiar tono de pantalla
Publicado por: penumbra en Agosto 26, 2015, 09:37:33 PM
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]
Título: Re:Cambiar tono de pantalla
Publicado por: djboro88 en Agosto 27, 2015, 09:20:57 AM
¿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)
Título: Re:Cambiar tono de pantalla
Publicado por: penumbra en Agosto 27, 2015, 11:42:09 AM
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
Título: Re:Cambiar tono de pantalla
Publicado por: 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?
Título: Re:Cambiar tono de pantalla
Publicado por: jodidox en Agosto 27, 2015, 02:35:20 PM
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

Título: Re:Cambiar tono de pantalla
Publicado por: jodidox en Agosto 27, 2015, 02:39:01 PM
Espero que te sirve, si alguna cosa me avisas...
Título: Re:Cambiar tono de pantalla
Publicado por: djboro88 en Agosto 28, 2015, 09:51:19 AM
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.