Below is a section of my code which handles a player's sprite rotating towards an angle after a user touches the screen:
touchState = TouchPanel.GetState();
if (touchState.Count > 0)
touchPosition = new Vector2(touchState.Position.X, touchState.Position.Y);
targetPosition = Math.Atan2(player.Position.X - touchPosition.X, player.Position.Y - touchPosition.Y);
if (angle_radians < targetPosition)
angle_radians += 2 * fps;
if(angle_radians > targetPosition)
angle_radians -= 2 * fps;
player.Angle = angle_radians * -1;
The problem I'm having is that when the angle goes past a certain point (I believe 3.15 radians?), the logic no longer functions correctly and the sprite reverses direction in a 360 circle until it meets the target position again.
I know there is something I'm missing from this logic, and I can see the problem, but I'm not sure how to approach handling it.
How would I prevent the sprite from reversing direction?