Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [SOLUCIONADO] Profundidad de generador de iluminación  (Leído 402 veces)

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

Desconectado jpsaenz

en: Octubre 13, 2018, 06:15:38 pm
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!
« Última modificación: Octubre 13, 2018, 07:12:49 pm por jpsaenz »

--
@jupixweb
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado jpsaenz

Respuesta #1 en: Octubre 13, 2018, 06:22:49 pm
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

globalvar light;
light = surface_create(view_wview,view_hview);

STEP

surface_set_target(light);
draw_set_color(c_ltgray);
draw_rectangle (0,0,view_wview,view_hview,false);
surface_reset_target();

DRAW

draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
draw_set_blend_mode(bm_normal);

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

STEP

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);
« Última modificación: Octubre 13, 2018, 08:54:45 pm por jpsaenz »

--
@jupixweb
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado jpsaenz

Respuesta #2 en: Octubre 13, 2018, 07:11:37 pm
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!
« Última modificación: Octubre 13, 2018, 07:16:34 pm por jpsaenz »

--
@jupixweb
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Yuzo

Respuesta #3 en: Octubre 14, 2018, 05:41:42 pm
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....