You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让set_drag_preview()使用的TextureRect实现居中拖拽?

问题描述

我使用以下代码展示拖拽物品预览:

func _get_drag_data(at_position: Vector2) -> Variant:
    var drag_preview := TextureRect.new()
    drag_preview.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
    drag_preview.texture = icon_texture_rect.texture
    drag_preview.custom_minimum_size = Vector2(80, 80)
    drag_preview.modulate = Color(1, 1, 1, 0.75)
    set_drag_preview(drag_preview)
    # return this item slot as the thing to be dragged
    return self

这段代码可正常运行,但当前拖拽的矩形以左上角跟随鼠标指针,我希望鼠标指针能拖动矩形的中心(效果为预览图中心始终对齐鼠标指针)。请问有没有实现该效果的建议?我在TextureRect和Control文档中未找到合适方法。

解决方案

方法一:使用容器节点偏移(推荐)

通过给TextureRect套一个同尺寸的容器,利用容器的定位让预览图中心对齐鼠标:

func _get_drag_data(at_position: Vector2) -> Variant:
    # 创建容器作为拖拽预览的根节点,尺寸和预览图一致
    var drag_container := Control.new()
    drag_container.custom_minimum_size = Vector2(80, 80)
    
    var drag_preview := TextureRect.new()
    drag_preview.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
    drag_preview.texture = icon_texture_rect.texture
    drag_preview.custom_minimum_size = Vector2(80, 80)
    drag_preview.modulate = Color(1, 1, 1, 0.75)
    
    # 将预览图偏移自身尺寸的一半,使其中心对齐容器左上角
    drag_preview.position = -drag_preview.size / 2
    drag_container.add_child(drag_preview)
    
    set_drag_preview(drag_container)
    return self

原理:Godot默认以拖拽预览节点的左上角对齐鼠标,容器左上角对齐鼠标后,内部偏移的预览图自然会中心对齐鼠标。

方法二:直接调整预览图的锚点和位置

如果不想额外创建容器,可通过修改TextureRect的锚点和位置实现:

func _get_drag_data(at_position: Vector2) -> Variant:
    var drag_preview := TextureRect.new()
    drag_preview.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
    drag_preview.texture = icon_texture_rect.texture
    drag_preview.custom_minimum_size = Vector2(80, 80)
    drag_preview.modulate = Color(1, 1, 1, 0.75)
    
    # 设置锚点为自身中心,再偏移位置让中心对齐鼠标
    drag_preview.anchor_center = Vector2(0.5, 0.5)
    drag_preview.position = -drag_preview.size / 2
    
    set_drag_preview(drag_preview)
    return self

内容的提问来源于stack exchange,提问作者Alexander Farber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:07:46