I am writing a game in Python with Pygame.
The co-ords (of my display window) are
( 0 , 0 )
at the top left and
(640,480)
at the bottom right.
The angle is
0°
when pointing up,
90°
when pointing to the right.
I have a player sprite with a centre position and I want the turret on a gun to point towards the player. How do I do it?
Say,
x1
,y1
are the turret co-ords
x2
,y2
are the player co-ords
a
is the angle's measure
Considering a triangle
First,
math
has a handyatan2(denominator, numerator)
function. Normally, you'd useatan2(dy,dx)
but because Pygame flips the y-axis relative to Cartesian coordinates (as you know), you'll need to makedy
negative and then avoid negative angles. ("dy" just means "the change in y".)degs
ought to be what you're looking for.OK, using a combination of your answers and some other websites I have found the working code:
The rest of my code isn't fussy about a negative value of degs; anyway, it works now and I'd like to say thanks for your help.
You'll probably want something like this - you may need to fiddle a bit - I may be off by 180 degrees. You'll also need to special-case the situation where dy==0, which I didn't do for you.