I sort of said this in your other thread, but after reading this thread I'll say it again more strongly: Stop using the /root node. It's a pain in the butt to deal with because it doesn't exist in the editor and you don't have any control over it. Make a "World" scene instead and use that.
I think it would help you at this point to get out a piece of paper, make a list of the different main elements in your game, and draw a diagram of how they will be organized. Think about which things are changing all the time and which things stick around. Actually, I'll do some of it for you here:
Most games have a main menu that is totally separate from the actual game. So you probably want two main scenes: Menu, and World. Everything in your game will at some point be a child of one of these scenes. Menu will be the default scene that's loaded when someone launches your game. In the menu you'll probably have a Play button that calls get_tree().change_scene("res://World.tscn"), loading the World scene and starting the actual "game" part of your game.
The World scene will have a bunch of things(scenes) inside it. Some of these scenes will be more or less constant for the whole game session, some will come and go all the time.
- Room - changes - each room contains the walls, obstacles, enemies, goodies, etc.
- HUD - always sticks around
- Player - sticks around until it dies
The room scene will change often, so you don't want to give it any children that are supposed to stick around. Walls, enemies, and stuff will be children of the room, since they should come and go with the room.
The player, even though he's "inside" the room, probably shouldn't be a child of the room scene, since he sticks around from room to room.
Changing Rooms: The code for this should be in a script on your World scene or maybe on a "Room Manager" node inside that, if you want things organized in smaller chunks. To change rooms, simply free() the current room, then load() and instance() the new room scene and add it as a child of the World(or Room Manager node).
When the room changes, the player will need to "teleport" to a new location depending on which door he entered through. So your Room Manager needs to remember which door you exited the last room from and use that info to figure out which door you enter in the new room. How exactly you do this is another discussion. The exact position of the door in the new room will probably depend on the room, so each room scene will have a function like get_room_pos(door), which returns the position of the specified door when called. The Room Manager just calls get_room_pos(door) for the door it wants, and moves the player to that position.
Room change done.