I'm assuming your crosshair is just on top of the screen and likely wouldn't need to go around things (why would it?). You need to set its position over time. I'd, personally, use lerp for this.
If --compare two values-- Distance(player.X,player.Y,crosshair.X,crosshair.Y) > 5,
Then crosshair>set position> X: lerp(Self.X, player.X, 3*dt), Y: lerp(Self.Y, player.Y, 3*dt)
Change the "3" to change the speed of the effect. The "5" up there is a small deadzone at your player's origin--technically not necessary.
This manual entry will explain those system expressions a little more if you need it. The gist (for these purposes) is it will slowly move towards the player and decelerate as it arrives (side note: technically, it will never arrive, but you can just round it off when its close enough). You could use fancier ways to get it to move, but this is a simple way to give a constant, smooth motion towards a target.