The code look long because I heavily commented it.
You can use
move too, but I don't know if it can make the code shorter.
It would be like this:
move(dir * (speed * delta))
In order for your node to move in a given direction (dir), you need that direction. All you have is an angle (one number), so you must convert that angle into a vector (x and y) using simple trigonometry.
You also need to define at which speed you want your object to move. In my code I just defined it on the fly as 10 pixels per second, but you can put it as a member variable of your script, or as a constant if you want.
delta is the parameter received by
_process. It contains the amount of time elapsed between two frames.
It needs to be a multiplier of
speed because in this way, your game won't slow down if the game lags, and won't be faster if FPS increases, it will stay at the speed you want.
move(vector2(the x and y pos) is possible indeed, that's what I do, because when you multiply
dir by a number (
speed * delta) you still obtain a vector, representing the "amount of distance in X and Y to move for this frame". That's basic vector math ;)
However, I agree the extra rotations I added are a bit cumbersome, but they are needed due to 2D conventions in Godot, and also because it depends how you drew your sprite. My code assumes the sprite looks at the right in its image file, but if you made it look up, you don't need it. And if it was looking left, you would need the opposite etc.