Ángulo de los disparos de los enemigos

Started by Yawin, November 22, 2010, 11:31:21 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

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?
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end


Yawin

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??
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

NesKy

Siendo asi, el proceso enemigo se pondria de cara al protagonista? No se le tendria que sumar o restar +/- 180000 además?

Yawin

#5
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.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DjSonyk

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.

Drumpi

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
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)