java - seno - Ángulo entre dos puntos y cálculo de la rotación
calcular angulos con coordenadas (0)
así que actualmente estoy programando un pequeño juego en Java con libGDX.
Quiero que la textura de los jugadores gire directamente a la posición del mouse. Lamentablemente, mi código no funciona, y no tengo ni idea de por qué no.
Entonces, llamo a este método en el método de Actualización del jugador:
private void CalculateRotation()
{
rotation = Position.angle(input.getTranslatedMousePos());
}
La Posición es solo un Vector2 con la posición de los jugadores. Obtengo los translatedMousePos así:
public Vector2 getTranslatedMousePos()
{
Vector3 v = camera.unproject(new Vector3(MousePos.x, MousePos.y, 0));
return new Vector2(v.x, v.y);
}
mientras que MousePos está determinado por el siguiente código:
@Override
public boolean mouseMoved(int screenX, int screenY) {
MousePos = new Vector2(screenX, screenY);
return false;
}
Dibujé el sprite de los jugadores así:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.draw(new TextureRegion(txt), Position.x, Position.y, (float)(size.x * 0.5), (float)(size.y * 0.5), size.x, size.y, 1.0f, 1.0f, rotation);
}
Lamentablemente, el sprite gira, pero de ninguna manera apunta al cursor.
Siguiendo cosas que descubrí aún:
spriteBatch.draw (..., rotation) acepta grados y Vector2.angle da el ángulo en grados
the translatedMousePos parece estar en lo cierto, me di cuenta que al pasar el mouse por encima del sprite de los jugadores (que está en (1000 | -1000)) y "imprimir" los TranslateMousePos traducidos, era el mismo
¡Gracias por tomarse su tiempo y ayudarme! :)