How do I create surfing?

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?

This is what I have been doing:
enter image description here

enter image description here

But this only works when the surface is flat. I call Set Normal in begin play.

I also made a little video which might be helpful: