La función angle_difference siempre devuelve el ángulo más pequeño, y quisiera el ángulo más largo, ¿alguna idea?  :-[

Podría ser así:
[gml]
d = angle_difference( a,b );
if( d > 0 ) d -= 360;
else d += 360;
[/gml]

Gracias Clamud, eso lo hace, pero lo que quiero es hacer esto:



Me estoy confundiendo xD, ¿alguna idea?  :-[

*Cuando se mueva en reversa, lo hará a una velocidad determinada*

#3 Noviembre 02, 2015, 12:00:11 AM Ultima modificación: Noviembre 02, 2015, 12:13:03 AM por penumbra
Aquí dejo este ejemplo que parece comportarse parecido a la explicación que diste (si es que entendí)

En el ejemplo, las variables a y b son los ángulos límites: a = 90° (donde inicia el giro) y b = 200° (donde termina)
http://www.mediafire.com/download/myn5h3a87jqbi7j/rotacion.gmz

El ángulo máyor debe calcularse si es que alguno de los ángulos límites se encuentra en los cuadrantes 3 y 4. El ejemplo no está muy desarrollado y puede no haga exactamente lo que buscas, pero probablemente sirva de guía. Hacer click en el botón azul para que el objeto comience a girar.

Lo que hace el script angle_max(), es que cambia el ángulo b = °200 a un valor de -160

#4 Noviembre 02, 2015, 12:43:32 AM Ultima modificación: Noviembre 02, 2015, 01:47:05 AM por Ynfiniti
¡Gracias Penumbra!  :D, pero ya lo logré haciendo esto:

if(devolver){
    var
    point = point_direction(oCirculo.x,oCirculo.y,x,y),
    dif = angle_difference(90,point),
    time = 4.5;
   
    if(sign(dif) == -1){
        dif += 360;
    }
   
    dir = point;
    dir += (dif/time);
   
    if(dir == 90){devolver = false;}
}