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...


The Power of the Light... Ahora si, la luz salvara el dia

Quiz? podrias hacerlos solidos y que al colisionar la velocidad de cada uno se haga cero, o simplemente hazlos rebotar unos contra otros.

esplica mas lo que quieres:

asi como me lo dices yo pondria un instance_destroy() en los eventos de colicion y listo  XD

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.



The Power of the Light... Ahora si, la luz salvara el dia

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

oooooook... y para lo otro?


The Power of the Light... Ahora si, la luz salvara el dia

#6 Marzo 24, 2010, 09:42:01 PM Ultima modificación: Marzo 24, 2010, 09:45:30 PM por soccer2008
Simplemente haz esto:

Aqui te dejo 2 ejmplos
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

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.


The Power of the Light... Ahora si, la luz salvara el dia

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

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
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

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.


The Power of the Light... Ahora si, la luz salvara el dia

#11 Marzo 25, 2010, 06:29:25 PM Ultima modificación: Marzo 25, 2010, 06:45:03 PM por Silver_light
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

La cuesti?n ser?a asignarle un movimiento distinto a cada personaje XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)