I've almost only used Godot for 3d but I started working on a 2d game and the control (ui) nodes don't behave the same. In 3d they always stays stationary on the screen when the camera moves, but in 2d, instead of staying in the same spot on the screen when the camera moves, it behaves like all children of Node2D and doesn't follow the camera (and can be overlapped by 2D nodes). I know this is probably intentional since both Node2D and Control families are extended from CanvasItem, but it's not working how I need it too, so does anybody know how I can make them stay stationary when the camera moves like in 3D? I hope this makes sense, I wasn't really how to describe my problem.

    Either use a canvas layer (and put all your UI under that node), or put all 2d nodes -- with the camera -- in a subviewport.

    PizzaHutsAlat started working on a 2d game

    same

    PizzaHutsAlat it behaves like all children of Node2D and doesn't follow the camera (and can be overlapped by 2D nodes). I know this is probably intentional since both Node2D and Control families are extended from CanvasItem, but it's not working how I need it too, so does anybody know how I can make them stay stationary when the camera moves like in 3D? I hope this makes sense, I wasn't really how to describe my problem.

    3D and 2D are rendered in different viewports, so when you put controls in a 3D camera it renders it on top.
    the same doesn't happen in 2D. in 2D you can mishmash Controls and 2D nodes, since they are all canvas.

    in order for controls to work correctly for UI in 2D, you need a CanvasLayer node, and put your UI as children of it.
    the nodes will just not work if they are just children of the camera, because the camera2D is not a viewport and doesn't have a size, so your control nodes are going to start drawing from the center and be all glitched.