Creating a simple diving mechanic

I haven’t really gone into movement mechanics before, so this is a first for me. How would I create a simple diving mechanic that just launches your character forward and stops when you jump or hit the ground? What’s the best way to apply the force to the player’s character? What’s the best way to manage the state of the player’s movement (can or can’t jump, currently diving, etc)? And, finally, what’s the most optimized way to do it?

For example, similar to the diving mechanic in the 2018 Egg Hunt or the diving mechanic in A Hat in Time.

You could use bodymovers as they apply physics to the character and for detecting changes either see if the player is moving in any x,z,y direction or on a :Touched() Event

Are you sure a Touched connection is the most reliable way of going about it? Besides, what character part would you be connecting the event to for the most ideal detection?