In my game, I have a similar situation. The enemies can fire bullets.
The enemies are children of a higher level node named Game. To fire a bullet, the enemy script calls a function fire_bullet() that's in Game's script, and that function calls add_child(). So the bullets are children of Game rather than the enemy, and their movement is not affected by the enemy's movement.
I suppose another method, possibly simpler, would be for the enemy to call game.add_child()
, where "game" is a reference to the Game node. That would have the same effect.