There is lots going on here but main problem is the Waits you need to take them all out to avoid bugs. You are adding values to a variable 'charge' but never use it, rather than use a wait you can switch the animation based on 'charge' amount. Also I imagine when you release the key it would be based on charge= some value, but that depends on how the charge mechanic works.