Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marcusmaniacus en Agosto 07, 2018, 02:41:44 AM

Título: Intance_Destroy No me funciona
Publicado por: Marcusmaniacus en Agosto 07, 2018, 02:41:44 AM
El código de mi juego no me esta sirviendo  Actualmente estoy utilizando un código que lleva a  detección de otro personaje 
pero el código que queiro no me funciona y mq ueiro matar !!! Este es el código alguien me peude decir como solucionarlo


instance_destroy(Obj_Personaje_De_Marco);

error (Wrong number of  arguments To funtion or  script)
me da ese error también inente con


Obj_Personaje_De_Marco.destroy();

y no funcionna  ayuda !!!
Título: Re:Intance_Destroy No me funciona
Publicado por: BssString en Agosto 07, 2018, 02:44:29 AM
Hola Marcusmaniacus

Intenta con:
With Obj_Personaje_De_Marco instance_destroy()

Saludos
Título: Re:Intance_Destroy No me funciona
Publicado por: Hezz en Agosto 07, 2018, 03:49:35 AM
Hola Marcusmaniacus! Te doy un consejo: Fijate en la parte de abajo de la ventana del código, te dice lo que requiere la función para ser usada de forma correcta. Te dejo una imagen para que lo veas.
En este caso dice instance_destroy([id], [execute_event_flag]). Al estar en corchete quiere decir que lo que pongas dentro es opcional. Si la función la ponés vacía en un objeto, elimina sólo ese objeto de la room. Si queres usar esa función desde otro objeto, necesitas su id. Ésta puede ser obtenida desde un evento de colisión con otro objeto con la función "other". Por ejemplo: Se choca una bala contra una pared:
    instance_destroy();         //Destruye la bala
    instance_destroy(other); //Destruye la pared
La función other devuelve el valor de la ID del otro objeto con el que se colisiona.
Si ponés instance_destroy(Obj_Personaje_De_Marco), estarías quitando a todos esos objetos del nivel, ya que no hacés referencia a un sólo objeto, si no a todos los que hayan en el nivel (aunque esto no se puede hacer en game maker).

Otra forma es como dice BssString, pero con un pequeño cambio:
Si se usa with (Obj_Personaje_De_Marco) {instance_destroy();} sucede lo de eliminar a todos los Obj_Personaje_De_Marco del nivel, no solo a uno. Por lo tanto, se puede cambiar por la función other:
with (other) {instance_destroy();}

Recordá que lo que configurás en game maker, los objetos, son "padres", y al usarlos en el juego pasan a ser "hijos", que son copias de ese padre con las características que configuraste heredadas. Pero cada hijo tiene una variable "id" que devuelve su id como objeto, ya que no pueden haber 2 objetos con la misma id.
Para explicarlo de otra forma, si tenés un objeto padre "manzana", podés decir que es rojo, grande y comestible. Los hijos tendrán características distintas. Heredan las propiedades (rojo, grande y comestible en este caso), pero pueden modificarse, agregarse o quitarse algunas propiedades. Por ejemplo, uno de los hijos puede ser rojo, mediano, comestible y mordida, y otro puede ser rojo, grande, no comestible y podrida. Por lo tanto, al configurar esto tenés que ver si querés eliminar a todos los objetos o sólo a uno.

Otra cosa, lo de Obj_Personaje_De_Marco.destroy() no es posible. Eso sólo funciona con variables, no con funciones.

Creo que me extendí mucho  XD

Espero que te sirva!   :D