Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: fedex2020 en Agosto 17, 2020, 09:29:15 PM

Título: Instance_destroy ()
Publicado por: fedex2020 en Agosto 17, 2020, 09:29:15 PM
Buenas tardes queridos makeros/as, me surge una duda que tengo con respecto a instance_destroy () , porque razón si cuando quiero destruir un objeto (ejemplo  enemigo)
Uso lo siguiente
[gml]with (objeto.enemigo )
{
Instance_destroy ()
}[/gml]
Me destruye todos los objetos enemigo....
Y cuando coloco (other) en vez de el nombre del enemigo en el with  Si me elimina sólo 1 enemigo como lo deseo, espero que puedan aclararme esta duda y desde ya muchas gracias
Título: Re:Instance_destroy ()
Publicado por: T789 en Agosto 17, 2020, 09:41:41 PM
Ahh... Te refieres a una instancia en particular ¿no?

para ello usas el numero de instancia unica que quieres destruir
[gml]
with(10001)
  instance_destroy()
[/gml]
Eso destruira sola a esa instancia, tambien puedes manejarlo en una variable depende de como lo quieras destruir, por ejemplo si colisionas, si esta cerca tuyo, o si no le queda vida, etc

Si quieres hacerlo con una en particular, simplemente busca su id en el editor de room, pero puede ser un poco fastidioso; asi que si quieres destruirlo segun los ejemplos anteriores, solo usa funciones que devuelvan id. Un ejemplo para colisiones es:
[gml]
/// Dentro de una bala
enemy = instance_place(x, y, obj_enemy)
if (enemy) {
  with(enemy) {
    vida -= 1;
    if (vida <= 0) instance_destroy()
  }
}
[/gml]
Título: Re:Instance_destroy ()
Publicado por: fedex2020 en Agosto 17, 2020, 10:03:19 PM
Muchas gracias, me dejaste todo claro...... graciaaaas....
Título: Re:Instance_destroy ()
Publicado por: Clamud en Agosto 18, 2020, 05:38:20 PM
Puedes omitir el "if (enemy)", el ciclo with ya verifica que las instancias existen antes de ejecutar el código. Puede funcionar así
[gml]
enemy = instance_place(x, y, obj_enemy);
with(enemy) {
    vida -= 1;
    if (vida <= 0) instance_destroy();
}
[/gml]