Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zid_zeta en Marzo 23, 2010, 09:29:47 PM

Título: ?Como evitar que dos objetos queden encimados?
Publicado por: zid_zeta en Marzo 23, 2010, 09:29:47 PM
Buenas tardes (donde vivo es la 1 pm...)

Me gustaria saber si alguien sabe como evitar que 2 objetos, ya sea al colisionar mientras se mueven o al ser creados, queden encimados uno sobre otro.

De antemano gracias...
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: Silver_light en Marzo 23, 2010, 09:41:04 PM
Quiz? podrias hacerlos solidos y que al colisionar la velocidad de cada uno se haga cero, o simplemente hazlos rebotar unos contra otros.
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: Alfonsos1 en Marzo 23, 2010, 09:48:30 PM
esplica mas lo que quieres:

asi como me lo dices yo pondria un instance_destroy() en los eventos de colicion y listo  XD
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: zid_zeta en Marzo 23, 2010, 11:08:26 PM
OK, una explicacion mas amplia:

Digamos que tengo un objeto que crea una determinada cantidad de objetos aleatoriamente en un room. Esos objetos se mueven hacia un punto en especifico, el cual es el protagonista del juego, y si me muevo ellos me siguen. El chiste es que cuando estos colisionan, se ponen uno sobre el otro, y asi se mueven hasta llegar a donde este mi ubicacion. Lo que quiero es que los objetos se sigan moviendo hacia mi, pero que no se encimen. Asimismo, como la posicion donde los objetos aparecen es aleatoria, a veces aparecen sobre un objeto que va pasando por ahi, y se enciman.

Espero que con esto quede claro el punto.

Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: Silver_light en Marzo 23, 2010, 11:17:49 PM
en el evento en el cual haces que se randomize por todo el room deberias colocar la condicion:

if (!place_free(x,y))
{
x = random(//valor);
y = random(//valor);
}

esto hace que si no hay un objeto en el lugar en que se mueve la instancia,se coloca alli, sino se mueve a otro lugar
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: zid_zeta en Marzo 24, 2010, 09:21:01 PM
oooooook... y para lo otro?
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: soccer2008 en Marzo 24, 2010, 09:42:01 PM
Simplemente haz esto:

Aqui te dejo 2 ejmplos
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: zid_zeta en Marzo 24, 2010, 11:41:17 PM
soccer2008... gracias por tus ejemplos. Por desgracia, el que reboten cuando colisionan no resuelve mi problema. Ya intente con ese metodo, pero no produce el efecto deseado.

En si lo que quiero que hagan es que, al colisionar un objeto con otro, este no se superponga, sino que se vaya junto con el otro objeto hacia el blanco.

Espero que eso les ayude a aclarar mi duda.
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: Silver_light en Marzo 25, 2010, 01:38:37 AM
entonces, podr?as usar la funcion:

mp_potential_step(x,y,speed,true);

haces que los enemigos sean solidos, usas true para que esquive los objetos solidos y as? no se superpondr?n cuando vayan directo hacia el blanco
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: soccer2008 en Marzo 25, 2010, 06:21:17 AM
Tiene razon Silver_light, pero ser?a aplicarlo a un array q contenga diferentes movimientos y no solo eso, sino tbm una serie de desiciones controladas x un switch XD XD XD
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: zid_zeta en Marzo 25, 2010, 05:19:32 PM
mp_potential_step(x,y,speed,true);...

me suena familiar...

llamame noob si quieres, pero en D&D esa opcion es la de Step Avoiding ?no? Si es asi, ya la he utilizado, y solo consigo que los objetos se queden girando como piezas de engranaje sin moverse ni un solo pixel... al menos hasta que destruya uno de los que obstaculiza el paso, en ese caso el otro objeto sigue su paso.
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: Silver_light en Marzo 25, 2010, 06:29:25 PM
hmmm...
entonces coloca una condicion de distancia con distance_to_object
asi cuando este lejos de blanco, se acercar?. Y al estar medio cerca dejar? de moverse en circulos tratando de buscar un camino para llegar al blanco.

Edit: te adjunto un ejemplo hecho en D&D a ver que te parece
Título: Re: ?Como evitar que dos objetos queden encimados?
Publicado por: soccer2008 en Marzo 28, 2010, 04:18:46 AM
La cuesti?n ser?a asignarle un movimiento distinto a cada personaje XD XD XD