Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Calcular ángulo según la posición  (Leído 137 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado FernandoNavarro

en: Marzo 26, 2020, 06:02:01 am
Hola buenas. Tengo una consulta, ¿cómo puedo invertir la fórmula: X = Xo + cos(ángulo) * radio para calcular el ángulo teniendo dos puntos?

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2513
  • Mensajes: 2.065
  • Agradecido: 98 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #1 en: Marzo 26, 2020, 06:14:55 pm
si te refieres a saber hacia qué dirección mira un punto cuando está mirando a otro, prueba point_direction(x1,y1,x2,y2)

sino, almenos especifica qué es X y qué es Xo ángulo de quién y radio de qué?, pues la fórmula se traduciría exactamente igual, con la misma sintaxis.

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado BssString

Respuesta #2 en: Marzo 28, 2020, 01:25:22 am
Hola FernandoNavarro

Al ángulo súmale 180 grados y ya inviertes la dirección.

En radianos usando la función "cos" sería multiplicar por la constante "pi".
X = Xo + cos(angulo+pi) * radio

A partir de GMS, se creó la función "dcos" para colocar los ángulos en grados.
X = Xo + dcos(angulo+180) * radio

Saludos

 


Desconectado FernandoNavarro

Respuesta #3 en: Marzo 28, 2020, 05:27:47 am
Hola, gracias a ambos. La fórmula que puse es una que había usado una vez pasada para que un objeto orbitara alrededor de otro.

Para ponerlos en contexto, estaba jugando Warcraft III y se me vino a la mente cómo hacer una torre de vigilancia. Entonces me puse a calcular ángulos en función de la posición del objeto al que la torre deba lanzar el proyectil. Hice algo así, luego lo optimizo:

Tengo tres variables que son de referencia para un triángulo.

Ax = x;
Ay = y;
Cx = objEnemy.x;
Cy = objEnemy.y;
AB = abs(Ax - Cx);
BC = abs(Ay - Cy);
Hyp = sqrt(power(AB, 2) + power(BC, 2);
Angle = arcsin(BC/Hyp);

¿Me podrían dar una ayuda con lo del ángulo? Hasta ahora va bien, pero algo me falta porque llega a 90° y comienza a bajar nuevamente el valor del ángulo, la idea sería que pueda calcular los 360°
« última modificación: Marzo 28, 2020, 06:06:13 am por FernandoNavarro »

 


Desconectado BssString

Respuesta #4 en: Marzo 28, 2020, 06:03:41 am
Hola FernandoNavarro

Te recomiendo usar la función:
direction = point_direction(x,y,objEnemy.x,objEnemy.y)
Que toma el ángulo que se forma entre 2 puntos y luego se lo asigna a la variable "direction".

Saludos