couldnt you just have an animation with him crouched down. while crouch button is pressed set speed to 0 and stop movement. play animation crouch.
to uncrouch negate(while crouch button is pressed) and animation crouch is playing. start movement.
thats sort of the way i do it in custom platform movements. not sure exactly cause i didnt try to see if it works. i was just trying to remember. examples ftw. brb.