Godot4.3类星露谷游戏开发之【生长的小麦】

千里之行,始于足下

零、 笔记

制作浇水后,开始随着时间不断成长的小麦,并产生掉落物,如下图所示;

请添加图片描述

一、小麦

第一步,在 res://scenes/物品/ 路径 下,以小麦( Sprite2D )为根节点创建 小麦.tscn 场景;

在这里插入图片描述

节点树如下:

第二步,选中 小麦(Sprite2D) 节点,从路径 res://assets/Sprout Lands - Sprites - Basic pack/Objects/ 导入 Basic_Plants.png ,并更改 Animation 参数以选中 发芽的小麦

在这里插入图片描述

2D中效果如下:

在这里插入图片描述

第三步,选中 CollisionShape2D 节点,在检查器中新建 RectangleShape 长方形区域,并在2D中调整至合适大小;

在这里插入图片描述

二、生长组件

第一步,在 res://scenes/组件/ 路径 下,以 生长组件(Node) 为根节点,创建 生长组件.tscn 场景;

在这里插入图片描述

第二步,选中 生长组件(Node) 节点附加脚本 ;

extends Node
## 作物生长
## 使得农作物随着时间不断切换Sprite2D图片的frame属性

signal 作物成熟
signal 阶段变更

enum 生长阶段 {
	种子,
	发芽,
	成长,
	生育,
	成熟,
	收获,
}

@export var 当前生长阶段: 生长阶段 = 生长阶段.发芽


var 开始时间: int = 0
var 已浇水: bool = false


func _ready() -> void:
	TimeManager.游戏格式化时间更新.connect(植物生长)


# 经过天数决定植物生长阶段
func 植物生长(时间数组: Array[int]) -> void:
	if not 已浇水 :
		return
	
	if 开始时间 == 0:
		开始时间 = 时间数组[0]
		当前生长阶段 = 生长阶段.发芽
	
	var 经过时间: int = 时间数组[0] - 开始时间
	var 当前阶段索引: int = 经过时间 + 1
	var 新阶段 = 生长阶段.values()[当前阶段索引]
	if 新阶段 != 当前生长阶段:
		当前生长阶段 = 新阶段
		阶段变更.emit()
		if 当前生长阶段 == 生长阶段.收获:
			作物成熟.emit()

第三步,回到 小麦.tscn 场景,将 生长组件.tscn 作为其场景实例;

在这里插入图片描述

三、掉落的麦子

第一步,在路径 res://scenes/物品/ 下,以 麦子(Sprite2D) 为根节点,新建 麦子.tscn 场景如下;

在这里插入图片描述

节点树如下:

第二步,选中 麦子(Sprite2D) 节点,在检查器中新建 AtlasTexture 并编辑区域,选取 麦子果实

在这里插入图片描述
2D中效果如下:

在这里插入图片描述

第三步,选中 CollisionShape2d 节点,在检查器中新建 CircleShape 并在2D中调整至合适大小;

在这里插入图片描述

四、搭建测试环境

第一步,将路径 res://scenes/测试/ 下的 测试_昼夜循环.tscn 复制为 测试_生长的小麦.tscn

在这里插入图片描述

第二步,变更根节点名称为 测试_生长的小麦 ,添加 小麦.tscn场景实例至合适位置,并删除 昼夜循环组件 节点;

在这里插入图片描述

五、测试

运行 测试_生长的小麦 场景,测试浇水后小麦的生长;

请添加图片描述

测试完成!

六、免费开源资产包

精灵包链接:点击此处
UI包链接:点击此处

  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、付费专栏及课程。

余额充值