How can I follow the terrain

I want to know how I can lerp from my current position, to another position, while hugging the terrain. Imagine I’m doing something like surfing, or skateboarding, where I need to follow the rail…etc. I’ve tried simply projecting from the location down to the plane to get the projection vector, but this will have problems if it’s not flat. If it’s bumpy, or if there are slopes, there are problems. Any ideas?

you try use NavMeshAgent?