Marzo 02, 2015, 12:59:25 AM Ultima modificación: Marzo 02, 2015, 11:25:42 PM por zHeMaa
Hola buenas, como bien dice el titulo, tengo una colisión o mas bien.. un objeto llamado obj_colision puesto en solido, el problema es que los enemigos al tocar ese objeto se quedan ahí colisionados (no se pueden mover), si alguien sabe como puedo arreglar esto me haría un grandisimo favor, gracias!  :)

Que codigo usas para moverlos???
Un codigo comun para mover a la derecha
if place_free(x+4,y) x+=4

Los muevo con "mp_potential_step", aquí te dejo el código exacto que utilizo:

mp_potential_step(obj_jugador.x,obj_jugador.y,velocidad,false);

#3 Marzo 02, 2015, 10:26:13 AM Ultima modificación: Marzo 02, 2015, 10:28:06 AM por penumbra
Como indica el manual, la función trata de evitar obstáculos, pero no hay garantía de que funcione al 100%. El problema se puede resolver de distintas maneras, una de ellas, es usar un evento de colisión ENEMIGO VS OBJETO

[gml]
{
   var dir = point_direction(other.x, other.y, x, y);
   move_outside_solid(pdir, 20);                           //Alejarse del objeto sólido en la dirección contraria
}
[/gml]

Cita de: penumbra en Marzo 02, 2015, 10:26:13 AM
Como indica el manual, la función trata de evitar obstáculos, pero no hay garantía de que funcione al 100%. El problema se puede resolver de distintas maneras, una de ellas, es usar un evento de colisión ENEMIGO VS OBJETO

[gml]
{
   var dir = point_direction(other.x, other.y, x, y);
   move_outside_solid(pdir, 20);                           //Alejarse del objeto sólido en la dirección contraria
}
[/gml]

Funciona perfectamente, muchísimas gracias!  :)

PD: en "move_outside_solid(pdir, 20);" en vez de pdir hay que poner dir, para quien quiera utilizar también el código.