I am working on a program that takes two coords from the game (X and Y, Z not relevent), and calculates how far point A (current position) is from point B (target position). However, i am having problems calculating which direction the object on point A needs to be facing (in degrees) to get to point B. I know there is some formula for this, however, I'm clueless.
So lets say my current position in the game is X-996 and Y-1071 currently facing a value of 100 (from what i see rotation is measured on a -180 to 180 scale, north being -90, east being 180, south being 90 and west being 0) and my target location is X-985 Y-1133, how would i go about calculating the rotation at which i need to be facing in order to reach my target position?
Below is the function i am currently using, that doesnt seem to work. what it does is grabs the coords from the objects current position then reads "waypoints" or pre-defined target positions from the text file. after that it tries to calculate the rotation (which is wrong) and then moves in that position towards the target position.
any help much appreciated :rolleyes:
So lets say my current position in the game is X-996 and Y-1071 currently facing a value of 100 (from what i see rotation is measured on a -180 to 180 scale, north being -90, east being 180, south being 90 and west being 0) and my target location is X-985 Y-1133, how would i go about calculating the rotation at which i need to be facing in order to reach my target position?
Below is the function i am currently using, that doesnt seem to work. what it does is grabs the coords from the objects current position then reads "waypoints" or pre-defined target positions from the text file. after that it tries to calculate the rotation (which is wrong) and then moves in that position towards the target position.
Code:
Func _Turn()
Local $Cur_Coords = _GetCoords()
Local $Next_Coords = StringSplit(FileReadLine(@ScriptDir & "\waypoints.txt",$Cur_Waypoint), ",") ;split x, y, z, map
;-------------------------------------------
Local $PosX = $Cur_Coords[0]-$Next_Coords[1];x
Local $PosY = $Cur_Coords[1]-$Next_Coords[2];y
$Next_Rot = _ATan2($Next_Coords[2] - $Cur_Coords[1], $Next_Coords[1] - $Cur_Coords[0]) * 180 / $Pi
GUICtrlSetData($Input6, $Next_Coords[1])
GUICtrlSetData($Input7, $Next_Coords[2])
GUICtrlSetData($Input10, Floor($Next_Rot))
$Cur_Rot = _GetRotation()
If $Next_Rot = $Cur_Rot Then Return $Next_Rot
While $Cur_Rot <> $Next_Rot And $Run
$Cur_Rot = _GetRotation()
_MouseMovePlus()
GUICtrlSetData($Input5, Floor($Cur_Rot))
WEnd
Return $Next_Rot
EndFunc