I'm making a game with a similar mechanic to this. The way I do it is assign an input action to the pullback, and in the process function, I have a potential velocity (int) variable goes up (multiplied by delta). When you release, it adds this potential velocity to the velocity variable (assuming you have one in your player already. The way you can have directional inputs with this system (mouse control example) is to add
get_local_mouse_position.normalized() * potential_velocity to velocity.
This is just a rough idea of what you might want, but I hope this helps!