实现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