I 'm happy that you thought my game was cool, thanks for playing. To answer your question, the drag and drop was created using an Area2D node along with mouse_entered and mouse_exited signals. I also made a custom input function to access the global mouse position and other variables to control the cursor shapes. The base node was a KinematicBody2D.