Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: alvarito8788 en Noviembre 15, 2017, 02:38:17 PM

Título: Como hacer sistema de luz solo cuando entras en el cuarto
Publicado por: alvarito8788 en Noviembre 15, 2017, 02:38:17 PM
Buenas, mi pregunta es la siguiente,  ¿Como podria hacer para que al entrar en un cuarto este se iluminase y al salir de el se viese encima de esa zona más opaco, no negro del todo sino oscurecido, pero mi objetivo no es un efecto linterna que vaya con el jugador por que sino iluminaria toda la room, y me gustaria que se fuese iluminando solo las habitaciones donde va entrando que he ido aciendo dentro de la room.
Saludos!!
Título: Re:Como hacer sistema de luz solo cuando entras en el cuarto
Publicado por: somnus en Noviembre 15, 2017, 04:59:48 PM
ya intentaste usando 'surfaces', ademas deberas de tener un control de todos los rooms que has visitado y poner valor de true a los que has visitado y por ende estan encendidos.
Título: Re:Como hacer sistema de luz solo cuando entras en el cuarto
Publicado por: shoonky en Noviembre 15, 2017, 08:04:51 PM
Podrias crear un objeto de color negro que cubra toda la room o la parte que quieras y usar place_meeting para que cuando el personaje este en la colision del objeto uses image_alpha y se aclare la room
Título: Re:Como hacer sistema de luz solo cuando entras en el cuarto
Publicado por: alvarito8788 en Noviembre 15, 2017, 09:12:33 PM
Muchisimas gracias shoonky has dado con la clave!! :D
Título: Re:Como hacer sistema de luz solo cuando entras en el cuarto
Publicado por: Naitsabes0 en Noviembre 15, 2017, 09:49:16 PM
Probablemente no se vaya a servir esto ahora, pero bueno, seguro le podrás hallar un uso a futuro usando la imaginación, solamente debes colocarla en la "room" que quieras que tenga este efecto si lo haces persistente desde la 1° todo tendrá ese efecto.

obj_Luz

CREATE

///Crear la superficie

superficie = surface_create(room_width, room_height);

surface_set_target(superficie);
draw_clear_alpha(c_black, 0);

//Reinicia la superficie
surface_reset_target();


STEP

///Control de la oscuridad
if (surface_exists(superficie)){
    surface_set_target(superficie);
   
    //conjunto oscuridad
    draw_set_colour(c_black);
    draw_set_alpha(0.5); //intencidad de la oscuridad 0 nada 1 absoluta
    draw_rectangle(0, 0, room_width, room_height, false);
   
    //conjunto circulos
    draw_set_blend_mode(bm_subtract);
   
   
    draw_set_colour(c_black);
    draw_set_alpha(0.2);
   
   
    // dibuja circulos
    with (obj_Jugador) {
        draw_circle(x + random_range(-1,1), y + random_range(-1,1), 80 + random_range(-1, 1), false);
       
        }
       
        draw_set_colour(c_white);
        draw_set_alpha(1);
       
        with (obj_Jugador) {
        draw_circle(x + random_range(-1,1), y + random_range(-1,1), 45 + random_range(-1, 1), false);
       
        }
       
       
       
    //Reinicia todo el conjunto dibujo
    draw_set_blend_mode(bm_normal);
    draw_set_alpha(1);
    surface_reset_target();
} else {
    superficie = surface_create(room_width, room_height);
    surface_set_target(superficie);
    draw_clear_alpha(c_black, 0);
    surface_reset_target();
}


ROOM_END

/// destruir la superficie
if (surface_exists(superficie)) {
    surface_free(superficie);
}


DRAW

///Dibuja la superficie

if (!surface_exists(superficie)) {
    superficie = surface_create(room_width, room_height);
} else {
    if (view_current == 0) {
        draw_surface(superficie, 0, 0);
    }
}


NOTA: Recuerda poner el objeto a depth con valores negativos en mi caso -999, que te diviertas  ;).