Godot4.3类星露谷游戏开发之【可收集物品】

千里之行,始于足下

零、 笔记

制作可收集组件,并将可收集组件作为物品子节点以实现可收集功能。

一、创建物品

第一步,创建新场景,以 Sprite2D 作为场景根节点(用于展示物品图片);

创建Sprite2D
第二步,选中 Sprite2D 节点,在检查器下的 Texture 加载 Egg_item.png 文件;
文件路径: res://资产/Sprout Lands - Sprites - Basic pack/Objects

加载Egg_item.png
第三步,在文件系统 res://场景/ 路径下创建 物品 文件夹;

创建物品文件夹
第四步,更改 Sprite2D 节点名为 ,并保存该场景在新创建的 res://场景/物品 路径下 ;

蛋
完成物品创建!

二、创建可收集组件

第一步,在文件系统 res://场景/ 路径下创建 组件 文件夹;

创建组件文件夹
第二步,创建新场景,并以 Area2D 为根节点;

Area2D
第三步,为 Area2D 附加脚本 可收集组件.gd ,并保存在 res://场景/组件 路径下

可收集组件.gd
第四步,理清 可收集组件.gd 检测玩家进入后收集物品的逻辑;
逻辑如下:

玩家节点 Area2D检测区域 Area2D的父节点:物品Sprite2D SceneTree 进入检测区域 触发body_entered信号 调用get_parent().queue_free() 安全移除物品Sprite2D节点 玩家节点 Area2D检测区域 Area2D的父节点:物品Sprite2D SceneTree

第五步,选中 可收集组件 节点,找到检查器下的节点 信号 ,右键点击 连接

连接可收集组件1
然后我们发现 可收集组件.gd 连接后变成了这样:

连接可收集组件2
注意左边的绿色箭头,代表连接成功;

  • 这个函数的意思是:如果检测到物理体 Phisics Body,就会执行这个函数里面的操作
  • 我们的玩家是正是用 Charecterbody2D 节点做的,这个节点就属于物理体 Phisics Body
  • 利用这一点可以实现检测到玩家进入后,将物品收集的目的!

编写代码如下:

extends Area2D

#一旦东西进入则使得物品消失
func _on_body_entered(body: Node2D) -> void:
	#获取父节点(物品)并删除
	#使得物品消失看起来像是收集了
	get_parent().queue_free()

三、物品 + 可收集组件

可收集的物品 = 物品 + 可收集组件;
第一步,将 可收集组件 作为 物品 的子节点;

可收集组件
第二步,根据警告,我们添加 CollisionShape2D 作为可收集组件的 收集范围

添加CollisionShape2D
并在检查器中选择收集范围的 形状 ,这里我们用圆形;

选择收集范围的形状
可自行调节圆形的大小。

第三步,将 添加到 测试_基本地形 场景中;

添加到测试_基本地形
第四步,运行当前场景前,我们打开调试,勾选 显示碰撞区域

显示碰撞区域
第五步,观察碰撞是否有效;

观察碰撞
碰撞有效,完成!

四、免费开源资产包

某开源网站精灵图资源包链接: 点击此处

  1. 进入链接后点击下图按钮
    下载

  2. 然后点击【No thanks,just take me to the downloads】(不了谢谢,只想下载)
    No thanks,just take me to the downloads

  3. 最后点击下图按钮完成下载(注意导入前需解压缩)
    下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForBigData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值