实现2D物品的拖拽移动

创建场景
创建Area2D节点,并在该节点下新建Sprite2D作为需要拖动的物品,将图片拖拽至sprite2D的texture中
为该sprite2D创建collisionShape2D节点,在collisionShape2D节点的shape属性中选择形状为方形RectangleShape2D
,并调整大小与sprite一致

脚本编写
为Area2D创建脚本,脚本功能包括
- 检测鼠标是否点击到了物体
- 将物品的位置移动到鼠标所在位置
- 为物品的点击添加偏移,点击哪个地方就以哪个地方作为移动原点
extends Area2D
var isDrag = false
var offset = Vector2.ZERO
func _process(delta):
if isDrag:
self.position = get_global_mouse_postion() + offset
func _input_event(viewport, event, shape_idx):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
if event.is_pressed():
offset = self.position - get_global_mouse_position()
isDrag = true
else:
isDrag = false