Loader

Shoutbox

[SOLUCIONADO] Profundidad de generador de iluminación

Publicado por jpsaenz, Octubre 13, 2018, 06:15:38 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 13, 2018, 06:15:38 PM Ultima modificación: Octubre 13, 2018, 07:12:49 PM por jpsaenz
Hola!

Quiero hacer unas lámparas que iluminen una room, pero necesito que uno de los objetos tenga una profundidad menor a la iluminación. En concreto es una estación de metro, en donde se debería ver al tren por delante de la iluminación, pero no logro realizar esto. La iluminación funciona, pero sobre todos los objetos de la room, sin importar el valor de profundidad que le asigne a cada objeto ("depth"). Creo que en la imagen adjunta puede apreciarse bien lo que quiero decir.

Alguien sabe como solucionar este problema?

Muchas gracias!
--
@jupixweb

Octubre 13, 2018, 06:22:49 PM #1 Ultima modificación: Octubre 13, 2018, 08:54:45 PM por jpsaenz
Aquí dejo el código que uso, en principio supongo que debo manipular la profundidad en el evento SURFACE_CREATE, pero no encuentro cómo hacerlo (y quizás sea de una forma diferente, no lo sé)

Primero, creo un objeto "obj_iluminacion" sin sprite que pongo en la room para oscurecer la habitación:

CREATE

[gml]globalvar light;
light = surface_create(view_wview,view_hview);[/gml]

STEP

[gml]surface_set_target(light);
draw_set_color(c_ltgray);
draw_rectangle (0,0,view_wview,view_hview,false);
surface_reset_target();[/gml]

DRAW

[gml]draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
draw_set_blend_mode(bm_normal);[/gml]

Y luego, creo un objeto "obj_lamapra", que será la fuente de iluminación

STEP

[gml]size=192;
draw_set_blend_mode(bm_subtract);
surface_set_target(light);
draw_ellipse_color(x-size/2-view_xview,y-size/2-view_yview,x+size/2-view_xview,y+size/2-view_yview,c_orange,c_black,false);
surface_reset_target();
draw_set_blend_mode(bm_normal);[/gml]
--
@jupixweb

Octubre 13, 2018, 07:11:37 PM #2 Ultima modificación: Octubre 13, 2018, 07:16:34 PM por jpsaenz
Por si a alguien le interesa, he dado con el error: estaba seteando la profundidad de mi "obj_lamapara", cuando en realidad debía setear la profundidad del "obj_iluminacion" (aquel primer objeto sin sprite que oscurece la pantalla, como puse en el código de más arriba... lo cual es lógico, ya que este objeto dibuja la sombra en el evento DRAW). Ahora tengo el problema de que el tren aparece sin oscurecer, pero eso puedo solucionarlo fácilmente haciendo el sprite más oscuro y listo. (supongo que una solución más elegante y menos fácil sería usar DRAW para dibujarle al tren una sombra igual de pronunciada de la que lleva la habitación)

Saludos!
--
@jupixweb

Lo que yo quieri saber es de que depende quebse vea la surface o no, yo tambien la uso en uno de mis niveles y en unos pc's se ve bien y en otros se ve completamente en blanco, hasta ahora nadie me ha sabido decir el por que....

Powered by EzPortal