quisiera crear un enemigo que al alejarse  se valla despacio a su posición inicial  y no se teletransporte


ese el el código que empleo :

if distance_to_object (obj_personaje)< 100
{

    mp_potential_step(obj_personaje.x,obj_personaje.y,3,false)

}
else
{
x =xstart
y =ystart
}

si alguien seria tan amable de corregir el error ya que soy un novato en esto se lo agradecería  :)
   
   
   

#1 Mayo 20, 2018, 03:07:19 PM Ultima modificación: Mayo 20, 2018, 03:42:23 PM por getnoff
Con "x =xstart / y =ystart" le dices que su posición pase instantaneamente a la inicial, para que sea de a poco puedes usar la función move_towards_point(x,y,speed) que mueve la instancia al punto x,y con velocidad speed, por ejemplo.

[gml]
if distance_to_object (obj_personaje) < 100
{
    mp_potential_step(obj_personaje.x,obj_personaje.y,3,false);
}
else
{
    move_towards_point(xstart,ystart,5);
    if x == xstart and y == ystart
    {
        speed = 0;
    }
}
[/gml]

[gml]
Cita de: getnoff en Mayo 20, 2018, 03:07:19 PM
Con "x =xstart / y =ystart" le dices que su posición pase instantaneamente a la inicial, para que sea de a poco puedes usar la función move_towards_point(x,y,speed) que mueve la instancia al punto x,y con velocidad speed, por ejemplo.

[gml]
if distance_to_object (obj_personaje) < 100
{
    mp_potential_step(obj_personaje.x,obj_personaje.y,3,false);
}
else
{
    move_towards_point(xstart,ystart,5);
    if x == xstart and y == ystart
    {
        speed = 0;
    }
}
[/gml]



gracias me sirvió ,  pero  ahora el enemigo cuando llega a su posición inicial se queda dando tirones , ¿sera algo de mi código ?



Eso es porque x == xstart o y=ystart no siempre se cumplira. Eso es porque si la velocidad es 5 y la distancia es menor o mayor que ese valor la condicion no se cumple.
Lo mejor seria usar distance_to_point  o  point_distance
[gml]
if distance_to_point(xstart, ystart)<=5
    {
        speed = 0;
    }
[/gml]

#4 Mayo 20, 2018, 09:45:15 PM Ultima modificación: Mayo 20, 2018, 09:48:57 PM por getnoff
Es verdad, fue mi error que se me pasó ese detalle, no lo había probado pero ahora lo hice y ya funciona bien, aquí lo dejo:
[gml]
if distance_to_object (obj_personaje) < 100
{
    mp_potential_step(obj_personaje.x,obj_personaje.y,3,false);
}
else
{
    if point_distance(x,y,xstart,ystart) > 5
    {
        move_towards_point(xstart,ystart,5);
    }
    else
    {
        speed = 0;
    }
}
[/gml]