If 'jumping' makes the difference. Set a boolean on jump. Unset the boolean on vector y=0, on land, and on grab to climb.
If the boolean is set = climb up, else it is climb down.
Not that i understand that. In my mind, climb up should follow on a vector y > 0 and is by wall. Dont think you need the helper object. (there is to much room in my mind). Climb up should follow on vector y < 0 and is by wall.
I must be missing something ?