TL;DR: I want to have a bot move toward the player. But my game operates in turns. There are obstacles. It's on a grid where anyone can move up/down/left/right. While I can make bots go up/down/left/right randomly, or scripted-ly, I can't figure out how to do it based on where the player or some other waypoint is. Help. The long version: I'm stumped on 2D, top-down, turn-based, maze/grid-like pathfinding and was hopeful someone would have some insight or suggestions. I'm working on something similar to old RPGs like Ultima III or IV. The game only progresses when you perform an action. If it helps, here is a video of my project, so far, in action: I'm trying to create a "tracking" system. As the player moves, he'd (unknowingly) lay down (invisible) waypoints that would increment. The "tracker" AI bots would prioritize, in order: the player (but only within a specified range); the closest waypoint of any value (but only within a specified range); or, if the aforementioned cannot be found, the lowest-numbered waypoint that they have not already visited. I have a fair bit of this working. I can gauge distance between any two objects. I can make a tracker move in a specific direction or randomly. I can drop invisible waypoints that increment. I can set the current state for the waypoint the tracker should be moving toward. I can have the raycast2d check for line of sight in case something like a wall is blocking the view of the player. But I can't figure out how to move the tracker in the correct direction. I was thinking that maybe I could figure the vector2.angle between the tracker and the player, and if it was, say, 45 degrees, try to move up or to the right, whichever was available after a raycast2D check. If neither, then just move randomly and try again next turn based on the current angle (or maybe drop more waypoints to create a trail of bread crumbs). But when I hooked that up I was getting weird angles, like 91 degrees when I'm one unit over and three units down from the tracker, or 18.6 degrees when I am directly next to it (to the right). If you've got some thoughts on what I'm doing wrong with vector2.angle, or if you think I am going about the tracking function the wrong way, please let me know. I could use a shove in the right direction. PS I am sure there are a great number of pre-made solutions available. I'm doing this to learn C# and Unity basics, so I intend to avoid those for now.