The easiest way I've come up with is to move it based on distance but it's crucial to design the level in a way that doesn't allow the player to venture too far off the path.
path_follow.offset += player.global_transform.origin.distance_to(camera.global_transform.origin) - 10
#the last value should be the closest distance the player can get before the camera moves backwards