[The code from where I based my script.][1] The code I have has the these 2 problems: - The visual area for the player to see what unit are going to be selected doesn't work as intended, if I start dragging from left to right, and down, the selection area is drawn inverted. If I try to do the same but inverting the movement the selection area is drawn correctly. - The selection area and the units I want to select are not selected, or just selects just one, might have something to do with the problem above. - Something I have tried is the code alone in another scene, this baffles me because it works as intended, it doesn't have any one of the problem above! The code: extends Node2D var dragging = false # are we currently dragging? var selected_units = [] # array of selected units var drag_start = Vector2.ZERO # location where the drag begian var select_rect = RectangleShape2D.new() const blue = Color(0.59, 0.86, 1.0,0.4) var drag_end = Vector2.ZERO var selected = 0 func _unhandled_input(event): if event is InputEventMouseButton and event.button_index == BUTTON_LEFT: # When the mouse button is pressed, then the dragging starts if event.pressed: if selected_units.size() == 0: dragging = true drag_start = event.position else: for unit in selected_units: unit.collider._set_selected(false) selected_units = [] dragging = true drag_start = event.position elif dragging: dragging = false drag_end = event.position update() drag_end = event.position select_rect.extents = (drag_end - drag_start) / 2 var space = get_world_2d().direct_space_state var query = Physics2DShapeQueryParameters.new() query.collide_with_bodies = true query.set_shape(select_rect) query.transform = Transform2D(0, (drag_end + drag_start)/2) selected_units = space.intersect_shape(query) selected = selected_units.size() for unit in selected_units: unit.collider._set_selected(true) if event is InputEventMouseMotion and dragging: update() func _draw(): if dragging: draw_rect(Rect2(drag_start, get_global_mouse_position() - drag_start), blue, true) Not sure why is that happening, now I think this is the line where the problem lies: query.transform = Transform2D(0, (drag_end + drag_start)/2) Since it's not inverting the area where we are trying to get the units selected. *not sure if did I missed something to configure elsewhere? why my code fails when it's in the main scene of my game but not on the test scene?* [1]: https://kidscancode.org/godot_recipes/3.x/input/multi_unit_select/index.html