Hola chicos,
necesito ayuda en mi código para generar una "onda" sobre una recta. He conseguido algo parecido con el siguiente código, pero no entiendo porqué se va para arriba (o para abajo según la variable sentido) en vez de ir oscilando recto, que es lo que necesito.
PROCESS habilidad_misiles(habilidades *habilidad, int Px, int Py, int angulo, int sentido, int giro, int amplitud)
PRIVATE
int contador,
giroMisil,
sentidoMisil;
END
BEGIN
file =disparosFPG;
region = REGION_JUEGO;
ctype=c_scroll;
x = Px;
y = Py;
graph = 7;
angle = angulo;
sentidoMisil = sentido;
giroMisil = giro;
size = 20;
while (contador < 100)
if((giroMisil > amplitud) || (giroMisil < -amplitud)) sentidoMisil = sentidoMisil * -1; END
giroMisil = (giroMisil + sentidoMisil);
angle = angle + (giroMisil * 1000);
advance(150);
contador++;
FRAME;
END
END
Alguna idea para que el misil vaya oscilando sobre una linea recta?
Gracias.
Has probado hacer con las funciones sin(x) o cos(x). Son oscilantes y ya tienes en el lenguaje.
Quote from: izubiaurre on October 08, 2011, 07:30:42 PM
Has probado hacer con las funciones sin(x) o cos(x). Son oscilantes y ya tienes en el lenguaje.
Pues no se como se utilizan, si me puedes ayudar con el código lo agradecería. Por otro lado, el misil tiene que apuntar siempre en la dirección hacia la que va.
La función SIN(X) en Bennu toma un ángulo en milésimas de grado y te da el seno. Los grados están multiplicados por 1000. El resultado es lo que tienes que sumar a las coordenadas x,y de la recta para que ondule. Ah, el seno te da un valor de -1 a 1. Tienes que multiplicarlo por la longitud en pixels que quieres que se desplace la onda.
(http://www.vadenumeros.es/imagenes/primero/funcion-seno.gif)
Aqui tienes un ejemplo de SIN(X)
http://wiki.bennugd.org/index.php?title=Sin (http://wiki.bennugd.org/index.php?title=Sin)
cierto, un ejemplo en codigo puede ser este:
seno=sin(angulo)*5;
x = x + seno;
angulo=angulo+10000;
donde sin(angulo) es lo que ha explicado hardyx, que sirve para que ''ondule''
x = x+ seno = al avance y angulo = angulo + 10000 es la frecuencia de ondulacion
dicho de una manera mas tosca, je je
Fantástico!! cuando lo implemente os comento el resultado, pero tiene muy buena pinta. ¿Esto sirve aun que el eje de la recta no sea X?
Gracias a los 2, Karma++
claro, porque lo que haces es sacar el seno del circulo segun el punto donde se encuentre