Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: matiascarpello en Febrero 08, 2018, 04:06:53 PM

Título: Destruir todos los objetos que colisionen con otro objeto
Publicado por: matiascarpello en Febrero 08, 2018, 04:06:53 PM
Hola gente.

   Tengo la siguiente duda.

En mi juego se crea un objeto pared, y necesito que todos los objetos que colisionen con el objeto pared se destruyan.

Podría solucionarlo utilizando el evento collition en cada uno de los objetos que quiero que se destruyan. El problema es que eso consumiría muchísimos recursos, porque son más de 100 diferentes los que tiene que destruir el objeto pared.

Por eso quería saber si hay alguna forma de que en el evento create del objeto pared, se pueda utilizar alguna función de que todo lo que colicione con el objeto pared sea destruido. De esa forma utilizaría unas simples líneas de código en un solo objeto y en el evento create el lugar de estar añadiendo códigos a más de 100 objetos diferentes.
Título: Re:Destruir todos los objetos que colisionen con otro objeto
Publicado por: JohnW en Febrero 08, 2018, 04:58:22 PM
Bueno no se muy bien como se podria hacer esto pero pongo una idea para ir probando.

Se me ocurre que puedes crear una lista "array" y que los objetos esten identificados en ella de la siguiente manera:

objeto[0] = 1;
objeto[1] = 1;
objeto[2] = 1;

Entonces una vez hecha la lista intentar controlarla desde la pared, en el evento collision que identifique que objeto de la lista a colisionado, si el 1 o el 2 o el 3 y ponerlo a cero. Es decir si el objeto que colisiona es el [1] pues la lista quedaria asi:

objeto[0] = 1;
objeto[1] = 0;
objeto[2] = 1;

Y cuando el objeto en concreto vuelva a aparecer como ya esta identificado en el array el [1] pasaria de nuevo a ser = 1 sin necesidad de volver a crear otro nuevo objeto en la lista.

No se todo es probarlo.
Título: Re:Destruir todos los objetos que colisionen con otro objeto
Publicado por: somnus en Febrero 08, 2018, 05:34:48 PM
porque major no haces un parent y que este tome el codigo generic, por ejemplo:

PARENT_WALL
|
-> COLLISION EVENT
{
//eliminar todos
other.destroy();

//eliminar ciertos objetos
if( other.tag == "enemy"){other.destroy()}

}


asi cuando un objeto colisione con la pared sera destruido, si quieres que ciertos objetos sean destruidos como enemigos,
ponle una variable al objeto, algo como un tag, y al destruir el objeto checas si tiene el tag "enemy" por ejemplo, si lo es,
entonces lo destruyes