java - vecteurs - distance entre deux points dans l espace



Angle entre deux points et calcul de la rotation (0)

donc je suis en train de programmer un petit jeu en Java avec libGDX.

Je veux que la texture des joueurs soit directement tournée vers la position de la souris. Malheureusement, mon code ne fonctionne pas, et je ne sais absolument pas pourquoi.

Donc, j'appelle cette méthode dans la méthode Update du lecteur:

private void CalculateRotation()
{
    rotation = Position.angle(input.getTranslatedMousePos());
}

La Position est juste un Vector2 avec la position des joueurs. Je reçois le translatedMousePos comme ceci:

public Vector2 getTranslatedMousePos()
{
    Vector3 v = camera.unproject(new Vector3(MousePos.x, MousePos.y, 0));

    return new Vector2(v.x, v.y);
}

tandis que MousePos est déterminé par le code suivant:

@Override
public boolean mouseMoved(int screenX, int screenY) {
    MousePos = new Vector2(screenX, screenY);
    return false;
}

Je dessine les sprites des joueurs comme ceci:

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

Malheureusement, le sprite tourne, mais ne pointe en aucun cas vers le curseur.

Après les choses j'ai compris encore:

  • spriteBatch.draw (..., rotation) accepte les degrés et Vector2.angle donne l'angle en degrés

  • le translatedMousePos semble avoir raison, je l'ai compris en survolant le sprite des joueurs (qui est à (1000 | -1000)) et en "imprimant" le translatedMousePos, c'était pareil

Merci d'avoir pris votre temps et de m'aider! :)





libgdx