Smoother turns/rotations with grid-based pathfinding

Godot Version



I’m using a TileMap and AStarGrid2D for pathfinding with diagonal mode set to never and euclidean heuristic. The current method I’m using makes a sharp turn at each point along the way, and I’d ideally like to see a smoother change of direction. I’m using get_id_path to fill current_id_path, which is an array of Vector2i. Navigation itself is working beautifully, it’s the sprite behavior during travel that’s bugging me.

	var target_position: Vector2 = tile_map.map_to_local(current_id_path.front())
	var angle: float = (target_position - global_position).angle()
	rotation = lerp_angle(rotation, angle, delta * rotation_speed)
	global_position = global_position.move_toward(target_position, speed * delta)
	# Remove the first element of the path array as the survivor arrives
	if global_position == target_position:
		# If there's nothing left, they've arrived at the destination
		if current_id_path.is_empty():
			arrived = true

YT video of current jerky turns

In a perfect world, I’d like to make it look like they’re rounding the corner instead of starting the turn after it gets to each point. Any recommendations on tutorials/articles on how to achieve this?