is_action_pressed
does what you want, it stays true
as long as the key is pressed. Because you put your code in _fixed_process
, it will run every physics frame. Which means you ask Godot to play "walk_left"
every 0.016 seconds. Playing an animation starts from its beginning, so it will look like it doesn't animate because you endlessly stick it at the beginning.
What you can do instead is to check if the animation is playing before, or do this part in _input
rather than _fixed_process
.