Ayuda con velocidad de rotación (angle)

Started by FreeYourMind, October 31, 2010, 11:57:26 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Buenas, tengo un gráfico que se mueve en circulo, pero quiero que se mueva en sentido horario y antihorario con las teclas derecha y izquierda respectivamente.

Esto lo estoy haciendo, pero quiero que el gráfico tenga mayor velocidad, o sea, que ande 3 veces mas rápido (por otras palabras, que haga 3 veces más camino en el mismo tiempo.

O sea, cada vez que pulso la tecla, el gráfico anda en circunferencia, x distancia alrededor en ese tiempo de pulsasión, pero quiero que en el mismo tiempo, ande 3 veces mas camino,
o sea que sea 3 veces mas rapido, todo sin cambiar el tiempo de pulsación (el cual hace que tengamos que volver a pulsar para que vuelva a andar un poco más).

El código es el siguiente, y necesito saber en que parte tengo que hacer el incremento, sin alterar la dimensión del circulo, ni de tiempo, de pulsación, ni cambiar el valor de FRAME

Grácias de antemano.



PRIVATE
time = 0;
wait = 30;

BEGIN
graph = 1;
x = 320;
y = 240;
       
  LOOP

        IF(key(_right) && timer[3] > time + wait)
           angle2 += (pi / 64);
           x = x + get_distx(angle2, 3); // 3 --> Distancia em relación al centro
           y = y + get_disty(angle2, 3);
   
           time = timer[3];
        END

        IF(key(_left) && timer[3] > time + wait)
   angle2 += pi/64;
           x = x - get_distx(angle2, 3);
           y = y - get_disty(angle2, 3);
   
           time = timer[3];
        END

    FRAME;
  END
END



Nota: la variable angle2 es local.

FreeYourMind

#1
Ya lo tengo, lo he arreglado con un FROM ... TO ... FRAME;END en el cual multiplico las veces que quiero ejecutar el incremento en el mismo tiempo.

Ahora necesito otra ayuda, quiero poner varias imagenes girando en la misma circunferencia (misma trayectoria), pero todas en posiciones iniciales distintas (como si cada una fuese un numero de un reloj en el cual los numeros se movieran alrededor).

Quiero usar el mismo procedimiento para todas, y como parametro de entrada tienen el valor de angle2 inicial (que ahora ya no es local) y del x, y (posicion inicial).

De momento sólo me funcionan 2 de las 8 que pongo, las cuales son la imagen de arriba y la del fondo, y tienen como parametro de entrada los angulos 0 (la del fondo con x=90, y=150) y 179968 (la de arriba, con x=92, y=64) respectivamente.

Los angulos de entrada de las imagenes que no hacen bien la circunferencia son: 44992, 89984, 134976, 224960, 269952 y 314944.
Estos angulos que he puesto (los 8), calculan todas las posiciones que cada imagen va tener en el trayecto, son posiciones validas, pero como entrada sólo 2 parecen hacer que la imagen haga correctamente el trayecto que quiero.

FreeYourMind

Grácias, mil grácias, ya esta resuelto, sólo habia que ponerle angulos negativos.
Me doy las grácias por haberlo resuelto  :-* :-*

Drumpi

Te iba a decir que pusieras angle2 como una variable de entrada en lugar de inicializarlo una y otra vez dentro del IF (incluso se puede alterar su valor cuando se quiera, sólo necesitarías otra varaible donde guardar su velocidad inicial).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)