Skip to content

Draggable Nodes

Valk edited this page Sep 22, 2024 · 12 revisions

Simply add the [Draggable] attribute to any Node2D or Control node and it will become draggable in-game.

using Godot;

// Hold to drag and limit movement to vertical axis
[Draggable(DragType.Hold, DragConstraints.Vertical)]
public partial class DraggableNode : Node2D
{
    public override void _Ready()
    {
        // Hook into the Draggable.DragReleased event
        Draggable.DragReleased += OnDragReleased;
    }

    private void OnDragReleased(Node node)
    {
        // Get the draggable node
        if (node.GetInstanceId() == GetInstanceId())
        {
            DraggableNode draggableNode = (DraggableNode)node;

            // Do something with DraggableNode
            draggableNode.QueueFree();
        }
    }

    public override void _ExitTree()
    {
        // Unsubscribe from the event when the node is removed from the tree
        Draggable.DragReleased -= OnDragReleased;
    }
}
Clone this wiki locally