Raycast from the Controller in the direction it's pointing... when it hits you use that as the "End Point"
The "Start Point" is a position between the Ground and Head Height
Then you simply determine a Maximum Distance you want to allow Teleportation.
Once you've got that, you can use that Distance as a Percentage to determine the Height of the Triangle (between the Start and End Point)
With that Triangle you can use a Quadratic Beizer Curve and a pre-determined number of iterations to then calculate the Curvature over said Distance to then provide you with each of the Start and End Points of the Planes.
This will provide you with an Arcing Series of Planes from the "Player" to the Targeted Destination that will Arc based upon Distance; with the Maximum Distance being a very light / linear curve.
Then it's just a case of added a texture to provide visual appearance...
As I do with many people., I'd recommend going to
Wolfram Maths as it's an absolute treasure trove of Mathematical Equations and Concepts that you'll used REGULARLY in Programming.