Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: ivn_eze en Diciembre 03, 2014, 04:04:22 AM

Título: Eliminar otra instancia del mismo objeto
Publicado por: ivn_eze en Diciembre 03, 2014, 04:04:22 AM
Hola a todos, tengo una duda:
en mi juego, similar a las damas, la ficha elegida avanza 80 pixeles en la direccion elegida, atravezando así otra instancia del mismo objeto (la ficha, de ahora en mas object0) que se ubica a 40 pixeles a la derecha de la posicion original y a 40 pixeles de la nueva posicion. Lo que nescesito, es que luego de transportarse (mediante jump,siempre en x), se elimine la instancia del mismo objeto que se ubicaba entre medio de las dos posciciones.

Hasta ahora tengo este codigo:

if (place_meeting(other.x-40,other.y+0,object0))
{
    with (other)instance_destroy();
}

pero lo unico que hace es destruir la instancia que intento preservar. ¿ que está mal?

PD:Perdon por la horrible explicación, pero son las 12 de la noche en mi pais,estoy dormido,  y solo nescesito este codigo para poder tener la engine lista y ponerme a hacer los niveles.  XD
Título: Re:Eliminar otra instancia del mismo objeto
Publicado por: Clamud en Diciembre 03, 2014, 07:59:57 PM
Prueba con la función position_destroy( x-40, y );
Título: Re:Eliminar otra instancia del mismo objeto
Publicado por: Black_Cat en Diciembre 03, 2014, 08:22:59 PM
Cita de: ivn_eze en Diciembre 03, 2014, 04:04:22 AM
Hola a todos, tengo una duda:
en mi juego, similar a las damas, la ficha elegida avanza 80 pixeles en la direccion elegida, atravezando así otra instancia del mismo objeto (la ficha, de ahora en mas object0) que se ubica a 40 pixeles a la derecha de la posicion original y a 40 pixeles de la nueva posicion. Lo que nescesito, es que luego de transportarse (mediante jump,siempre en x), se elimine la instancia del mismo objeto que se ubicaba entre medio de las dos posciciones.

Hasta ahora tengo este codigo:

if (place_meeting(other.x-40,other.y+0,object0))
{
    with (other)instance_destroy();
}

pero lo unico que hace es destruir la instancia que intento preservar. ¿ que está mal?

PD:Perdon por la horrible explicación, pero son las 12 de la noche en mi pais,estoy dormido,  y solo nescesito este codigo para poder tener la engine lista y ponerme a hacer los niveles.  XD


Lo que está mal en tu código es que usas la palabra reservada "other" que no hace referencia a nada en concreto. Tendría sentido si el contexto fuera una colision.

Lo que podés hacer es lo siguiente:

var ficha;
ficha = place_meeting(x-40,y+0,object0);

if (ficha >0)
    with (ficha) instance_destroy();

Lo digo al tanteo, pero probá si te sirve.



Revisando el manual ahora que puedo, la función place_meeting(...) no te va a funcionar del modo que propongo porque solo devuelve true/false. En todo caso, usá:

var ficha;
ficha = instance_position(x-40,y,object0);

if (ficha != noone)
    with (ficha) instance_destroy();

Título: Re:Eliminar otra instancia del mismo objeto
Publicado por: ivn_eze en Diciembre 05, 2014, 06:03:07 PM
Muchas Gracias Black_Cat, después de probar tu código, vi que no funcionaba y lo modifiqué. Ahora anda perfecto.

var asd
asd = instance_place(x+40,y+0,all);
with (asd)instance_destroy ()