Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: nonoroman en Agosto 31, 2017, 11:43:18 AM

Título: OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: nonoroman en Agosto 31, 2017, 11:43:18 AM
Buenas, pues vengo con una pregunta sencilla.

La verdad es que creo que alguna vez lo he hecho pero ahora no recuerdo.

La cuestion es, puedo obtener la id del objecto con el que esta colisionando a partir de un tercero??

os pongo el ejemplo, desde el obj_control, compruebo si una bombilla esta colisionando con una pared, si es asi, quiero comprobar el alpha de la pared y si es menos a 1, realizar una accion.

El caso es que me funciona el codigo, pero, pero como hay varias paredes, la accion ultima se ejecuta en otra pared, que es la que se carga primero. Es decir no tiene en cuenta el id de la pared con la que se esta trabajando.

Entonces, como obtengo la id de la pared desde otro objecto??

Os paso el codigo;

//LUCES DE LAS BOMBILLAS
for(i=1;i<=BOMBILLAS_TOTALES;i++)
{   
    if instance_exists(luz_bombillas[i])
    with(luz_bombillas[i])
    {
        if !(place_meeting(x,y,objectPARED_HABITACION)){draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);}
        if (place_meeting(x,y,objectPARED_HABITACION))
        {   
            pared = objectPARED_HABITACION.id; 
       
            if (pared.image_alpha < 1)
            {
                audio_play_sound(sound0,1,0);
                draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
            }
        }
    }
}


Bueno a ver si entre todos damos con la solucion, porque solo me falta ese detalle.
Saludos y abrazos!!!!  ;)
Título: Re:OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: bochaPastore en Agosto 31, 2017, 01:37:16 PM
Con lo siguiente podes obtener el id del objeto:


var inst = instance_place(x, y, obj_pared);
with(inst)
{
//tu codigo
}


Saludos.
Título: Re:OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: nonoroman en Agosto 31, 2017, 02:10:35 PM
Muchas gracias por responder. Pero no termino de comprenderlo del todo.

Segun tu codigo. Entiendo que.
Si estas en el mismo lugar que el objecto pared.
Entonceces con pared, paso el id de esa pared directamente a la variable inst??

O dentro de with (inst) tengo que ejecutar ahora id_pared = id;

Asi es?? Y se podria hacer lo mismo con place meeting??

Cita de: bochaPastore en Agosto 31, 2017, 01:37:16 PM
Con lo siguiente podes obtener el id del objeto:


var inst = instance_place(x, y, obj_pared);
with(inst)
{
//tu codigo
}


Saludos.
Título: Re:OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: bochaPastore en Agosto 31, 2017, 02:34:25 PM
instance_place retorna el id de la instancia que esta collisionando con tu bombilla.

por ende, en la parte del with(inst) te estas refiriendo a esa pared con ese id particular.

Dentro del with(inst) deberias hacer que se ejecute lo que vos queres q pase al tocar esa pared.

Ahora si?

proba con esto:


for(i=1;i<=BOMBILLAS_TOTALES;i++)
{   
    if instance_exists(luz_bombillas[i])
    with(luz_bombillas[i])
    {
        if !(place_meeting(x,y,objectPARED_HABITACION)){draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);}
        if (place_meeting(x,y,objectPARED_HABITACION))
        {   
           
           var pared = instance_place(x, y, objectPARED_HABITACION); 
           
            if (pared.image_alpha < 1)
            {
                audio_play_sound(sound0,1,0);
                draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
            }
        }
    }
}
Título: Re:OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: nonoroman en Agosto 31, 2017, 04:45:49 PM
Muchas gracias bocha. La verdad es que desconocia esa funcion.

Voy a probarlo. La verdad es que tiene buen pinta. Deberia de funcionar. Pruebo y te cuento.

;D

Cita de: bochaPastore en Agosto 31, 2017, 02:34:25 PM
instance_place retorna el id de la instancia que esta collisionando con tu bombilla.

por ende, en la parte del with(inst) te estas refiriendo a esa pared con ese id particular.

Dentro del with(inst) deberias hacer que se ejecute lo que vos queres q pase al tocar esa pared.

Ahora si?

proba con esto:


for(i=1;i<=BOMBILLAS_TOTALES;i++)
{   
    if instance_exists(luz_bombillas[i])
    with(luz_bombillas[i])
    {
        if !(place_meeting(x,y,objectPARED_HABITACION)){draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);}
        if (place_meeting(x,y,objectPARED_HABITACION))
        {   
           
           var pared = instance_place(x, y, objectPARED_HABITACION); 
           
            if (pared.image_alpha < 1)
            {
                audio_play_sound(sound0,1,0);
                draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
            }
        }
    }
}

Título: Re:OBTENER ID DEL OBJECTO COLISIONADO
Publicado por: nonoroman en Septiembre 01, 2017, 06:04:18 PM
Muchas gracias bocha. Ya funciona a la perfeccion.
La verdad es esta funcion no la conocia y es muy util. Eres un grande. Gracias.

;D ;D

Cita de: bochaPastore en Agosto 31, 2017, 02:34:25 PM
instance_place retorna el id de la instancia que esta collisionando con tu bombilla.

por ende, en la parte del with(inst) te estas refiriendo a esa pared con ese id particular.

Dentro del with(inst) deberias hacer que se ejecute lo que vos queres q pase al tocar esa pared.

Ahora si?

proba con esto:


for(i=1;i<=BOMBILLAS_TOTALES;i++)
{   
    if instance_exists(luz_bombillas[i])
    with(luz_bombillas[i])
    {
        if !(place_meeting(x,y,objectPARED_HABITACION)){draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);}
        if (place_meeting(x,y,objectPARED_HABITACION))
        {   
           
           var pared = instance_place(x, y, objectPARED_HABITACION); 
           
            if (pared.image_alpha < 1)
            {
                audio_play_sound(sound0,1,0);
                draw_surface_ext(sur, x - sprite_width / 2, y - sprite_height / 2, 1, 1, 0, image_blend, 1);
            }
        }
    }
}