class_name BuilderObject extends Node2D var is_colliding = false var is_dragged = false var mouse_offset = Vector2(0,0) var last_position = Vector2(0,0) func _ready(): $CollisionShape.texture.width = $Area2D/CollisionShape2D.shape.size.x func _process(_delta): if is_dragged: position = get_global_mouse_position() + mouse_offset func _on_area_2d_input_event(_viewport, event: InputEvent, _shape_idx): if event.is_action_pressed("drag_start"): drag_start() if event.is_action_released("drag_start"): drag_end() func drag_start(): if get_viewport(): mouse_offset = position - get_global_mouse_position() last_position = position is_dragged = true func drag_end(): if is_dragged and is_colliding: if last_position != Vector2(0,0): position = last_position else: queue_free() is_dragged = false func _on_area_2d_area_entered(_area): is_colliding = true modulate = Color("bb5a4b") func _on_area_2d_area_exited(_area): #if $Area2D.get_overlapping_areas().size() == 0: is_colliding = false modulate = Color("fff")