Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on November 22, 2010, 11:31:21 AM

Title: Ángulo de los disparos de los enemigos
Post by: Yawin on November 22, 2010, 11:31:21 AM
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?
Title: Re: Ángulo de los disparos de los enemigos
Post by: Goku jr on November 22, 2010, 12:52:09 PM
La funcion get_angle no te puede servir?
Title: Re: Ángulo de los disparos de los enemigos
Post by: 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??
Title: Re: Ángulo de los disparos de los enemigos
Post by: Windgate on November 22, 2010, 01:59:24 PM
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
Title: Re: Ángulo de los disparos de los enemigos
Post by: NesKy on November 22, 2010, 02:06:06 PM
Siendo asi, el proceso enemigo se pondria de cara al protagonista? No se le tendria que sumar o restar +/- 180000 además?
Title: Re: Ángulo de los disparos de los enemigos
Post by: Yawin on November 22, 2010, 02:44:16 PM
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.
Title: Re: Ángulo de los disparos de los enemigos
Post by: DjSonyk on November 22, 2010, 11:03:37 PM
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.
Title: Re: Ángulo de los disparos de los enemigos
Post by: Drumpi on November 23, 2010, 03:04:24 AM
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