千里之行,始于足下
零、 笔记
制作可收集组件,并将可收集组件作为物品子节点以实现可收集功能。
一、创建物品
第一步,创建新场景,以 Sprite2D 作为场景根节点(用于展示物品图片);
第二步,选中 Sprite2D 节点,在检查器下的 Texture 加载 Egg_item.png 文件;
文件路径: res://资产/Sprout Lands - Sprites - Basic pack/Objects
第三步,在文件系统 res://场景/ 路径下创建 物品 文件夹;
第四步,更改 Sprite2D 节点名为 蛋 ,并保存该场景在新创建的 res://场景/物品 路径下 ;
完成物品创建!
二、创建可收集组件
第一步,在文件系统 res://场景/ 路径下创建 组件 文件夹;
第二步,创建新场景,并以 Area2D 为根节点;
第三步,为 Area2D 附加脚本 可收集组件.gd ,并保存在 res://场景/组件 路径下
第四步,理清 可收集组件.gd 检测玩家进入后收集物品的逻辑;
逻辑如下:
第五步,选中 可收集组件 节点,找到检查器下的节点 信号 ,右键点击 连接;
然后我们发现 可收集组件.gd 连接后变成了这样:
注意左边的绿色箭头,代表连接成功;
- 这个函数的意思是:如果检测到物理体 Phisics Body,就会执行这个函数里面的操作
- 我们的玩家是正是用 Charecterbody2D 节点做的,这个节点就属于物理体 Phisics Body
- 利用这一点可以实现检测到玩家进入后,将物品收集的目的!
编写代码如下:
extends Area2D
#一旦东西进入则使得物品消失
func _on_body_entered(body: Node2D) -> void:
#获取父节点(物品)并删除
#使得物品消失看起来像是收集了
get_parent().queue_free()
三、物品 + 可收集组件
可收集的物品 = 物品 + 可收集组件;
第一步,将 可收集组件 作为 物品 的子节点;
第二步,根据警告,我们添加 CollisionShape2D 作为可收集组件的 收集范围;
并在检查器中选择收集范围的 形状 ,这里我们用圆形;
可自行调节圆形的大小。
第三步,将 蛋 添加到 测试_基本地形 场景中;
第四步,运行当前场景前,我们打开调试,勾选 显示碰撞区域;
第五步,观察碰撞是否有效;
碰撞有效,完成!
四、免费开源资产包
某开源网站精灵图资源包链接: 点击此处
-
进入链接后点击下图按钮
-
然后点击【No thanks,just take me to the downloads】(不了谢谢,只想下载)
-
最后点击下图按钮完成下载(注意导入前需解压缩)