Febrero 22, 2014, 09:14:46 PM Ultima modificación: Febrero 22, 2014, 09:28:28 PM por Jangse
Bueno...otra duda que tengo  :-[

Entiendo mas o menos la función instance_destroy(). Ya sé que no tiene muchos secretos. Pero yo quiero poder destruir objetos de forma selectiva. Y claro, esta función no admite parámetros.

Por ejemplo:

En mi juego tengo una puerta para pasar al siguiente nivel. Y esta solo se destruye cuando eliminamos todos los enemigos del nivel (nada original por cierto, jejeje...). Para hacer esto, tengo un objeto control que va contando cuantos enemigos nos quedan.

Mi código:

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
       
        // Aquí vendría el instance_destroy obj_puerta
}


Es decir, cuando se destruye la puerta podemos pasar de nivel ya que el acceso queda libre.

LA PREGUNTA ES...

¿Porqué no admite parámetros? ¿No sería lógico un instance_destroy(objeto)?

¿La forma correcta es...? with (obj_puerta) instance_destroy();

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
    with (obj_puerta) instance_destroy();
}

Cita de: Jangse en Febrero 22, 2014, 09:14:46 PM
¿La forma correcta es...? with (obj_puerta) instance_destroy();
Sí.

Cita de: Jangse en Febrero 22, 2014, 09:14:46 PM
¿Porqué no admite parámetros? ¿No sería lógico un instance_destroy(objeto)?
No lo sé a ciencia cierta. Pero instance_destroy es una función "delicada", creo que es más seguro y produce menos errores  "entrar" a la instancia ESPECÍFICA y destruirla, en lugar de tener el "poder" de destruir instancias desde cualquier lugar.

Ok. Gracias...

Como comentas es mas lógico y "seguro" eliminar la instancia dentro de su objeto. Pero hay veces que creamos códigos en otros objetos que tienen relación con otros. Por ejemplo, en el típico objeto_control.

También he de decir que no es muy legible el código:

with (obj_puerta) instance_destroy()

Por eso dude en ponerlo. Mas o menos viene a decir:

Con el objeto puerta destruyelo.

No le veía mucha relación. Pero bueno, si es así, así lo pondré...