【GDScript】物品的拖拽

Godot 3.2.4

接着上个文章 (【GDScript】设计物品的属性) 开始做

我们开始给物品添加拖拽功能,在 Goods 节点的脚本里开始添加如下代码

var drag_source		# 用于记录上一个拖拽的节点(物品放下后给这个节点交换数据)

#------------------------------
#  节点带有的方法
#------------------------------
func get_drag_data(position: Vector2):
	var drag_node = self.duplicate()	# 复制一份当前的节点,用于拖拽显示
	drag_node.use_top_left = true	# 使图片居中,看起来自然
	drag_node.drag_source = self
	set_drag_preview(drag_node)		# 设置鼠标拖拽的节点
	return drag_node


func can_drop_data(position: Vector2, data) -> bool:
	# 判断能否放在这个节点上
	return data && data.get("goods_property")	# 有 goods_property 属性才能放下


func drop_data(position: Vector2, data) -> void:
	# 接收放下的节点数据
	swap_goods(self, data.drag_source)



#------------------------------
#  自定义方法
#------------------------------
## 交换两个物品
## (其实两个物品的属性都做成了资源,剩下节点都一样
## 这样我们只用交换一下资源属性就等于物品给替换了)
func swap_goods(a, b):
	var p_temp = a.goods_property
	a.goods_property = b.goods_property
	b.goods_property = p_temp

我给忘了,上个教程让勾选了,这次给 Goods 节点的 use_top_left 取消勾选了
在这里插入图片描述
再清除 goods_property 属性内容,点击左边的小圆圈箭头
在这里插入图片描述
勾选 TextureRect 节点的 Expand 属性
在这里插入图片描述

我们再新建一个场景做物品栏,添加如下节点
在这里插入图片描述
给 GridContainer 节点的 columns 属性设为 5
在这里插入图片描述
选中 GridContainer 节点,点击场景上边的链接图标 在这里插入图片描述
然后搜索 Goods 节点,并添加:
在这里插入图片描述
开始再设计两个物品,双击选中上次做的 Weapon_02.tres 文件
在这里插入图片描述
属性面板中如下操作,学习 AtlasTexture 资源的使用
在这里插入图片描述
在这里插入图片描述
点击编辑器底部的 TextureRegion
在这里插入图片描述
在这里插入图片描述
做完如下:
在这里插入图片描述

你现在可以按照以上步骤做 Weapon_03.tres 文件的属性,我做的这样的
在这里插入图片描述
做完,我们逐个将做好的物品资源文件拖拽放到我们的场景中的 Goods 节点的 goods_property 属性上。

接下来见证奇迹的时刻,按 F6 运行游戏:
在这里插入图片描述
(完)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值