Wie berechne ich die Rotation eines Objektes in Pygame?
Als Beispiel: Ich habe Objekt a, und a soll sich zu Objekt b drehen. Da man in Pygame keine Rotation zu einem Objekt (b) durchführen kann (jedenfalls habe ich dazu nichts gefunden), muss man die Gradanzahl selbst berechnen. Ich habe als Beispiel diese Pfeilgrafik eingefügt:
(Auf Gutefrage leider verschwommen)
Python-Version: 3.12
2 Antworten
Um die Gradanzahl zu berechnen, um von Objekt A zu Objekt B zu drehen, kannst du die trigonometrischen Funktionen verwenden, insbesondere die Arkustangensfunktion (auch bekannt als
math.atan2()
in Python), um den Winkel zwischen den beiden Objekten zu berechnen.
Hier ein Beispielcode:
objekt_a = pygame.image.load("objekt_a.png")
objekt_b = pygame.image.load("objekt_b.png")
# Bestimme die Positionen von Objekt A und Objekt B
a_position = (100, 100)
b_position = (500, 300)
# Berechne den Vektor von Objekt A zu Objekt B
dx = b_position[0] - a_position[0]
dy = b_position[1] - a_position[1]
# Berechne den Winkel zwischen den beiden Objekten in Grad
angle = math.degrees(math.atan2(-dy, dx))
# Rotiere Objekt A um den berechneten Winkel
objekt_a_rotated = pygame.transform.rotate(objekt_a, angle)
Hoffe es hilft.
Wenn du die Position beider Objekte im Raum kennst, kannst du die Position b von a abziehen, und bekommst so den Vektor, welcher von a nach b zeigt. So kannst du mit
Den Winkel in Radianten berechnen und durch
in Grad umwandeln.