You’ll need to jump through some hoops to get a re-usable NLA-hop cycle that also follows a path/curve.
Expand to see method...
Why not just use the *follow-path* constraint?
You can, but if you change the path, you will get slippage and you’ll most likely have to re-key everything… It’s a hassle. Wish the follow-path constraint had an “absolute offset” measured in Blender units. That would fix this issue, but Blender doesn’t have that yet…
The solution (Thanks to Wiresoul Studio)
See this video for an overview of a solution to this issue which uses the curve modifier and parent-to-vertices. It also explains why the follow-path constraint doesn’t play nicely with the NLA editor.
Really hope this solution will be obsolete soon and that Blender gets some-or-other follow-path constraint update to ease animating walk-cycles.
Extending the solution for a non-constant speed hop-cycle
The YT solution above works great for a constant-speed walk cycle but the following additions were required to make it work for a hop-cycle.
First made a hop action for the path-following-triangle that the cube is parented to…
…which is a single step-and-shuffle of the X and Z positions (arbitrarily choosing a 20-frame cycle and a 2-unit step) which resulted in the following NLA clip settings:
Note this clip starts at frame 0. This is very important to get a 20-frame cycle.
Then made a driver for the path-following-triangle’s X-position (Using X+ as my deform axis) to generate a step-function with #floor(frame/20)*2
. Meaning, step by 2 every 20 frames.
which then got converted to keyframes with 3D ViewPort->Object->Animation->Bake Action.
After deleting the rotation and scale keyframes you should be left with this:
… you then need the add blend type on your new step action:
The rest should be similar to the solution vid.
The downside to this method is that you can’t arbitrarily scale the hop-speed in the NLA editor - everything will go wacky and you’ll need to start over with your hop and step actions or create different actions for different hop speeds, but it is a massive improvement over trying to use the follow-path constraint in its current state.
Hope that helps someone.