Buenas, pues aqui ando otra vez de nuevo con una super cuestion.

No creo que sea imposible de resolver, pero despues de llevar toda la tarde estudiando como resolverlo, pues no encuentro la manera, y esto solo lo podra resolver un maquina porque tiene tela.

Os cuento, despues de tener que recontruir el surfaces de oscuridad unas 4 veces, para poder hacer lo que yo deseaba, que al final he conseguido. Me encuentro con la siguiente, cuestion.

Para hacer que el surfaces funcione bien, pero muy bien, la clave esta en crear todas las luces desde el objecto que controla el surfaces.

He creado la luz que sigue al player, y puedo controlar, el color, el alpha, etc, hasta aqui todo bien.

Pero el problema surge, cuando, la luz que tenemos que crear, tiene que seguir a muchos objetos distintos. Es decir, no solo uno. En el caso del player, al haber solo un player no hay problema. Pero por ejemplo, para crear la luz del sufaces para cada una de las bombillas que hay en la room, esto ya supone un problema.

Consigo crear la luz para una bombilla, pero y las demas??

El problema esta, que tengo que crear las luces y posicionarlas desde el objecto que controla el surfaces (obj_control) entonces no se como pasarle la id de cada una de las bombillas a cada luz correspondiente.

Lo he estado intentando con unos arrays y fors pero, el juego arranca pero no se dibuja nada.
Es decir, el codigo no esta mal, no da errores, pero no se dibuja ninguna luz en ninguna bombilla.

Os paso mi codigo, a ver si me podeis ayudar. Os recuerdo, que el objecto de la LUZ debe ser creado y posicionado en el STEP en todo momento por el object que crea el surfaces, y de hay el problema.

OBJECTO QUE CONTRALA EL SURFACES (obj_control)

CREATE
// CREA LUZ DE LAS BOMBILLAS
    for(i=BOMBILLA;i<=BOMBILLAS_TOTALES;i++)
    {
        luz_bombillas[BOMBILLA] = instance_create(0, 0, objectLUZ_BOMBILLAS);
        with (luz_bombillas[BOMBILLA]) {
          light_change_scale(1, 1);
          light_update();
        }
    }



STEP
//LUCES DE LAS BOMBILLAS
for(i=BOMBILLA;i<BOMBILLAS_TOTALES;i++)
{   
    if instance_exists(luz_bombillas[BOMBILLA])
    with(luz_bombillas[BOMBILLA])
    {
        draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
    }
}


END STEP
// LUZ BOMBILLAS
for(i=BOMBILLA;i<=BOMBILLAS_TOTALES;i++)
{       

    if instance_exists(luz_bombillas[BOMBILLA])
    {
        luz_bombillas[BOMBILLA].x = BOMBILLA[ID_BOMBILLA].x;
        luz_bombillas[BOMBILLA].y = BOMBILLA[ID_BOMBILLA].y;
       
        with (luz_bombillas[BOMBILLA])
          light_update();
    }
}


Por supuesto decir, que cada vez que creo una una bombilla, esta suma la variable BOMBILLAS_TOTALES y por cada BOMBILLA sumo uno, para numerar la bombilla y por cada BOMBILLA[ID_BOMBILLA] le paso el valor de la variable del sistema id.

Pero no funciona, repito, no da error de codigo, pero las luces de las bombillas no se crean ninguna.

Esto va ser complejo de resolver, pero se que en la comunidad hay auntenticos maquinas, seguro que podemos averiguar el como.

Por favor, que algun maestro me explico como puedo hacerlo, por favor!!!!  ???



PCNONOGames  www.pcnono.es

Porque dibujas la surface en cada objeto bombilla ?
[gml]
with(luz_bombillas[BOMBILLA])
    {
        draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
    }
[/gml]

Ya!!! Ya me funciona!!

Simplemente habia planteado mal el array.

Ahora lo he corregido y efectivamente. Funciona!!

;D
PCNONOGames  www.pcnono.es