Hola, vengo aquí con toro problema:
En mi juego, a partir del nivel 3, algunos enemigos van a disparar. La cosa es que quiero que lo hagan hacia la nave. Para eso, tengo que saber qué ángulo tienen respecto a la nave enemiga.
Bien, he calculado que si la nave enmiga tiene las coordenadas X1/Y1 y la nave protagonista tienen las coordenadas X2/Y2, el ángulo sería el arcotangente de ((Y2-Y1) entre (X2-X1))
Usease: arctg [(Y2-Y1)-(X2-X1)]
¿Estoy en lo cierto?
En ses caso, ¿cómo diantres calculo el arcotangente?¿Hay alguna función para ello?
La funcion get_angle no te puede servir?
Esque no entiendo lo que pone en la wiki:
le paso la id de la nave protagonista y me devuelve el ángulo que teno que meterle al disparo para que haciendo advance(); llegue hasta ella??
Quote from: yawin on November 22, 2010, 12:53:53 PM
Esque no entiendo lo que pone en la wiki:
le paso la id de la nave protagonista y me devuelve el ángulo que teno que meterle al disparo para que haciendo advance(); llegue hasta ella??
Exacto:
angle = get_angle ( id_protagonista );
Y listo xD
Siendo asi, el proceso enemigo se pondria de cara al protagonista? No se le tendria que sumar o restar +/- 180000 además?
en mi caso, llamaría al proceso edisparo enviándole su x su y y su angle
y el disparo iría diréctamente hacia la nave.
Pero sí, el que reciba ese ángulo se encararía hacia el proceso en cuestión.
_______________________________________________
aun así, me gustaría ser capaz de programar esa función. Digamos que me gustaría verme capaz.
Imagino que habrá que usar alguna librería que se llame mod_math o alguna cosa asi no??
EDIT:
Me he hecho una especie de "campo de tiro" de prueba, para probar lo del get_angle, y me temo que o algo hago mal, o no es tan preciso como me gustaría.
El campo de tiro:
http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=prueba_disparos.rar
Controles:
Nave morada: W,A,S,D y X para disparar.
Nave verde: Flechas.
Problema: Si ponemos la nave morada arriba del todo a la izquierda del todo, sus coordenadas serán (0,0). Y si ponemos la nave verde en la esquina inferior derecha, sus coordenadas serán (640,480).
Bien, las ponemos ahi, le damos a la X, y el disparo se queda: lejos, no. Más lejos todavía.
Con lo que te a dicho Wind seria mas que suficiente para lo que quieres,quieres mas precision entoces retoca la resolucion.
http://wiki.bennugd.org/index.php?title=Resolution
A mayor resolucion mas precisión.
Por si las dudas, también existe FGET_ANGLE, que es más fácil de entender, menos automática (y ligeramente más lenta) ^^U