(摘) Godot图片拖动

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

在游戏的“背包系统”中经常会需要物品的拖动,Godot内置了拖动相关函数。

B站转载的视频学习

bool _can_drop_data(at_position: Vector2, data: Variant)  是否允许拖动/接收(目标)
void _drop_data(at_position: Vector2, data: Variant) 拖动传递来的数据(目标)
Variant _get_drag_data(at_position: Vector2) 拖动对象数据(源)

看起来只有Control类型下的节点类型有完全的几个函数。而Node2D下只有_get_drag_data函数。

源对象上挂的脚本

extends TextureRect

# at_position 拖动时点击的区域
func _get_drag_data(at_position: Vector2) -> Variant:
        # 拖动发送给目标的数据,类型随意
        # 例如这里的数组数据1,可以用于表示源的类型.在目标中可以判断是否接受
	var data = [self,1]  
	var prev = TextureRect.new()
	prev.texture = texture
	set_drag_preview(prev)  # 拖动时的样子
	return data

目标对象上挂的脚本

extends TextureRect

func _can_drop_data(at_position: Vector2, data: Variant) -> bool:
	return data[1]==1

func _drop_data(at_position: Vector2, data: Variant) -> void:
	var move_obj = data[0]
	move_obj.position = position + Vector2(5,5)
	#var obj = data.get_parent()
	#obj.remove_child(move_obj)	
	#obj.add_child(move_obj)

相关文章