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