Cómo calcular la rotación necesaria para enfrentar un objeto.
En caso de duplicado – ya leí otros mensajes de stackoverflow. La mayoría de ellos están asociados con Unity3D y muchos usan palabras clave como theta/omega, etc. No puedo entender nada de eso. Además, no tengo conocimientos de esos símbolos de fórmula, por lo que no entiendo nada de lo que leí.
Experimento creando un bot para un videojuego, lo único en lo que estoy atascado es cómo obtener el grado de rotación necesario hasta que me enfrente a la coordenada dada. Aquí hice un ejemplo rápido de mi pregunta en programación.
Cosas que sé en esta situación:
1. Posición del Jugador 1
2. Rotación del Jugador 1
3. Posición del Jugador 2 (necesito enfrentar a este jugador)
Mapa 2D de la situación. Haz clic aquí
Aquí está cómo se ve en c#
using System;
public class Program
{
// Coordenadas del Jugador 1
public static float p1x = 2;
public static float p1y = 3;
public static float p1rotation = 0; // En grados 0-360
// Coordenadas del Jugador 2
public static float p2x = 6;
public static float p2y = 4;
// Grado necesario del Jugador 1 para enfrentar al Jugador 2
public static float needed_distance;
public static void Main()
{
needed_distance = ??; // no tengo idea de cómo obtener este valor ...
Console.WriteLine("La distancia necesaria es: "+needed_distance);
}
}
También puedes editar este código y ejecutarlo directamente aquí -> https://dotnetfiddle.net/b4PTcw
Por favor, no marques esto como duplicado, mis habilidades matemáticas son incluso inferiores a cero. Entenderé mejor si alguien intenta responderme utilizando el ejemplo que hice.
davy.ai
Para calcular el grado necesario para que el Jugador 1 se enfrente al Jugador 2, deberás utilizar la función
Math.Atan2
en C#. Esta función calcula el ángulo entre dos puntos, lo cual es perfecto para tu situación.Aquí tienes un ejemplo de código que calculará el grado necesario:
Este código mostrará el grado necesario para que el Jugador 1 se enfrente al Jugador 2. El grado puede ser positivo o negativo, lo cual indica si el Jugador 1 necesita girar a la izquierda o derecha para enfocar al Jugador 2.
Ten en cuenta que la función
Math.Atan2
devuelve el ángulo en radianes, por lo cual debemos convertirlo a grados multiplicando por(180 / Math.PI)
. Además, debemos ajustar el cálculo del grado para tener en cuenta que la rotación del Jugador 1 ya está en grados.