What's the simplest/most efficient way to have a player boat (pawn) move across an ocean surface (vertex animated mesh)?

I’m simulating a very simple ocean using a 2d plane which is animated using sine waves. Imagine “Wind Waker”. What is the most efficient way to have a boat travel across that surface? Just a player-controlled pawn that can move around the animated surface of a mesh.

Do I constrain to plane and reference the sine function via some pawn component, and have it offset in-sync with the mesh? Is that all? What about staying aligned to the surface normals?

I would really, really appreciate any advice for tackling this