Skip to content

zaknafean/dragdrop

 
 

Repository files navigation

Use

  1. Add the DragDropController node in your scene.
  2. In the inspector, fill in Drag Group with the name of the group containing nodes you want to be draggable, by default, the group is named "draggable".
  3. If you wish to Clamp drag and drop to the visible screen coordinates, toggle Clamp To Screen. You may also set offsets (in pixels) to shrink the draggable area further.
  4. Please note, draggable componenets must Inheret from CollisionObject2D or Control type nodes
  5. (optional) In the node that can be dragged, you can create two methods : on_drop and on_drag_start

on_drop

Called when the node is dropped. Return "false" to prevent drop. Do not return anything (no return in your function) or return true to allow drop.

Here is an example of implementation to check if you are dropping in a free space:

onready var previous_position = position
func on_drop():
	position = position.snapped(Vector2(64,64))
	yield(get_tree(),"idle_frame")
	yield(get_tree(),"idle_frame")
	if get_overlapping_areas().size()>0:
		print("col!")
		position = previous_position
	else:
		print("no col")
		previous_position = position

on_drag_start

Called when the node begin to be dragged. (if multiple nodes are stacked, only the topmost node will be dragged)

About

Drag and drop for Godot

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • GDScript 100.0%