useSpawn creates an object while the game runs (a bullet, an enemy wave, an explosion) and destroy removes one. Move with ← → and fire with Space: each shot is a new object that carries the useUpdate moving it and ends its own life offscreen or on impact.
Removal is deferred to the end of the frame, Godot style, so a bullet cannot register a second hit after it exploded and never leaves a ghost frame behind. Note what the tank does not do: no bullet pool, no list, no cleanup.