I have been going through and completely abstracting the entire input manager in my game. As you can see, it keeps track of button states, velocity of the attached GameObject as well as if it’s standing or not on a flat surface:
Now with a cleaner way of managing input I am able to add even more behaviors such as the Mega Man slide:
I still need to create artwork for it, but it’s working great. Plus, I have a way of referencing other behaviors such as walk and jump to be disabled when you slide. This is critical since the behaviors don’t know anything about each out outside of being able to use Unity’s built-in enable/disable option on MonoBehavoir scripts.