阶段一:Godot 基础入门 (约 1-2 周)
下载与安装 Godot 引擎:
前往 Godot 官网下载最新稳定版。Godot Engine – Free and open source 2D and 3D game engine ✅
了解不同版本(标准版 vs .NET 版),初学建议用标准版(GDScript)。 ✅
熟悉 Godot 编辑器界面:
场景坞 (Scene Dock)✅
文件系统坞 (FileSystem Dock)✅
检查器坞 (Inspector Dock)✅
节点坞 (Node Dock)✅
顶部菜单和工具栏✅
理解核心概念:
节点 (Node): Godot 的基本构建块。✅
场景 (Scene): 节点的集合,可独立运行或实例化。✅
场景树 (Scene Tree): 节点如何组织在一起。✅
脚本 (Script): 如何给节点添加行为 (GDScript)。✅
信号 (Signal): 节点间通信的方式。✅
学习 GDScript 基础:
变量与数据类型 (int, float, bool, String, Vector2)✅
_ready() 和 _process() / _physics_process() 函数✅
条件语句 (if, elif, else)✅
循环语句 (for, while)✅
函数定义与调用✅
导出变量 (@export) 以在检查器中调整✅
创建你的第一个简单项目:
创建一个新项目。✅
创建一个 2D 场景。✅
添加一个 Node2D 或 Sprite2D 节点。✅
附加一个简单的 GDScript,在 _ready() 中 print(“Hello Godot!”)。✅
运行项目,查看控制台输出。✅
阶段二:2D 核心概念与玩家角色 (约 2-3 周)
理解 2D 节点:
Node2D: 2D 节点的基础。
Sprite2D: 显示 2D 纹理(你的像素图)。
CharacterBody2D: 用于需要物理交互的角色(如玩家、敌人)。
CollisionShape2D: 定义物体的碰撞形状。
导入像素美术资源:
将你的像素图(.png 格式)拖入 Godot 的文件系统坞。
重要: 选中导入的图片,在“导入”坞中设置:
Preset -> 2D Pixel (会自动关闭 Filter 等)。
或者手动关闭 Filter (防止模糊)。
点击 Reimport。
创建玩家场景 (Player Scene):
创建一个新场景,根节点设为 CharacterBody2D。
添加 Sprite2D 节点用于显示玩家图像。
添加 CollisionShape2D 并设置合适的形状(如矩形或胶囊形)。
实现玩家输入与移动:
在 项目设置 -> 输入映射 (Input Map) 中定义移动动作(如 move_up, move_down, move_left, move_right),并绑定键盘按键(WASD, 方向键)。
在玩家脚本中:
在 _physics_process(delta) 中获取输入 (Input.get_vector(…) 或 Input.is_action_pressed(…))。
计算移动方向和速度。
使用 move_and_slide() 方法移动 CharacterBody2D。
实现玩家动画:
准备玩家不同状态(如:静止、行走上/下/左/右)的像素动画序列图。
使用 AnimatedSprite2D 节点:
创建 SpriteFrames 资源。
添加动画(如 “idle”, “walk_down”)。
将序列图拖入对应的动画帧。
在玩家脚本中根据移动方向和状态切换动画 (animated_sprite.play(“walk_down”))。
(可选) 或使用 AnimationPlayer 配合 Sprite2D 的 texture 和 frame 属性制作更复杂的动画。
阶段三:构建游戏世界 (约 2-3 周)
使用 TileMaplayer 创建关卡:
准备瓦片图集 (Tileset) 像素素材。
创建一个新场景作为主关卡 (Level Scene)。
添加 TileMap 节点。
创建 TileSet 资源:
将瓦片图集纹理拖入 TileSet 编辑器。
设置瓦片大小 (cell size)。
为需要碰撞的瓦片添加物理层 (Physics Layer) 和碰撞形状。
(可选) 为特定瓦片添加导航层 (Navigation Layer) 或自定义数据。
使用 TileMap 编辑器绘制关卡地图。
设置碰撞:
确保 TileMap 的物理层设置正确。
确保玩家的 CharacterBody2D 也有对应的碰撞层 (Collision Layer) 和遮罩 (Collision Mask),以便与 TileMap 互动。
测试玩家是否能在地图上移动并被墙壁阻挡。
添加相机 (Camera):
在玩家场景中添加 Camera2D 节点。
启用 Current 属性,使其成为活动相机。
(可选) 调整 Zoom 属性以适应像素风格。
(可选) 启用 Smoothing Enabled 使相机跟随更平滑。
(可选) 设置 Limit 属性限制相机移动范围。
将玩家实例化到关卡中:
将之前创建的玩家场景 (.tscn 文件) 拖拽到主关卡场景树中。
运行关卡场景,测试玩家移动和相机跟随。
阶段四:互动与基础游戏逻辑 (约 2-4 周)
学习 Area2D 与信号:
理解 Area2D 节点的作用:检测区域重叠,常用于触发器、拾取物、伤害区域等。
了解 Area2D 的常用信号,如 body_entered, body_exited, area_entered, area_exited。
创建简单的拾取物:
创建一个物品场景(如金币),根节点为 Area2D。
添加 Sprite2D 显示物品图像。
添加 CollisionShape2D 定义检测区域。
给 Area2D 连接 body_entered 信号到脚本。
在信号处理函数中,检查进入的 body 是否是玩家。如果是,执行拾取逻辑(如增加分数、销毁物品 queue_free())。
创建简单的敌人 (可选):
创建敌人场景 (使用 CharacterBody2D 或 Area2D,取决于是否需要物理碰撞)。
实现简单的敌人 AI(如:固定路径巡逻、追击玩家)。
实现与玩家的互动(如:碰撞造成伤害)。
实现简单的生命值/状态系统:
在玩家脚本中添加生命值变量。
创建受伤害的函数。
实现死亡逻辑(如:播放死亡动画、游戏结束)。
阶段五:视觉与听觉润色 (约 1-2 周)
用户界面 (UI) 基础:
学习 Control 节点(UI 节点基类)。
使用 Label 节点显示分数、生命值等信息。
使用 TextureRect 显示 UI 图片(如心形图标)。
使用 CanvasLayer 节点确保 UI 在游戏画面顶层且不随相机移动。
(可选) 创建简单的开始菜单和游戏结束界面。
添加音效和音乐:
导入音频文件 (.wav, .ogg)。
使用 AudioStreamPlayer 播放全局音效或背景音乐。
使用 AudioStreamPlayer2D 播放有位置的音效(如脚步声、攻击声)。
在代码中适时调用 play() 方法播放声音。
粒子效果 (可选):
使用 GPUParticles2D 或 CPUParticles2D 添加简单的视觉效果(如:尘土、火花)。
阶段六:整合与进阶 (持续进行)
场景管理:
学习如何切换场景 (get_tree().change_scene_to_file(“res://path/to/scene.tscn”))。
实现从菜单到游戏,从游戏到结束界面的流程。
项目组织:
学习良好的文件结构组织习惯(如创建 scenes, scripts, assets 等文件夹)。
使用分组 (@export_group) 和类别 (@export_category) 整理检查器中的导出变量。
调试技巧:
熟练使用 print() 语句。
学习使用 Godot 的调试器(设置断点、检查变量)。
开启 调试 -> 可见碰撞形状 查看碰撞体。
学习更多 Godot 功能:
自动加载 (Singletons) 用于全局状态管理。
保存与加载游戏进度。
光照 (Light2D, PointLight2D, CanvasModulate)。
着色器 (Shaders) 以实现特殊视觉效果。
导出游戏:
学习如何配置导出模板。
将游戏导出为 Windows, Linux, macOS 或 Web 等平台的可执行文件。
评论(2)
此评论仅作者可见