GameTech/Godot 4.7 互动教程
目录示例游戏
Godot 4.7 · 中文 · 免费 · 边学边玩

从零做出能玩的游戏
Godot 4.7 互动教程

每一章都配有能在浏览器里直接运行的 Godot 示例。拖动滑块就能改游戏里的参数,马上看到效果,看懂原理之后再下载完整工程,用 Godot 打开接着做。

先讲原理,再写代码每个知识点先讲清楚原理,用可以拖动的交互图演示,再落到 GDScript 代码上。
在浏览器里跑真游戏示例都是用 Godot 4.7.2 导出的 Web 版,不用安装任何东西就能玩。
边调参数边看效果重力、速度、生成频率这些参数都能在线调整,游戏马上响应。
工程可以下载每个示例都能下载完整工程,用 Godot 4.7 直接打开,调好的参数也会一起带上。

示例游戏

点进去可以试玩、调参数、看全部源码、下载工程。

课程目录

建议按顺序学。如果你已经会 Godot 3 或其他引擎,可以从实战部分开始。

第一部分 · 入门

  1. 01认识 Godot 4.7Godot 是什么、该下载哪个版本、三种渲染器怎么选;认识项目管理器和编辑器的各个区域,弄清工程文件夹里每个文件的用途,做出第一个场景。最后介绍本教程的用法:在网页上运行示例、拖滑块改参数、下载工程。
  2. 02节点与场景Godot 的一切都是节点,节点组成树,树可以存成场景再反复实例化。本章讲场景树、实例化、组合、三大节点家族、get_node 路径、owner、分组和唯一名称。
  3. 03GDScript 速成用一章的篇幅把 GDScript 过一遍:静态类型和 := 推断、函数、控制流和 match、数组和字典、@export/@onready、setter、类和内部类、static、lambda、await,最后用可以单步执行的时间轴弄清楚 _init、_enter_tree、_ready、_process、_physics_process、_exit_tree 的先后顺序。
  4. 04信号与节点通信信号是节点之间"我发生了某事"的广播。本章讲内置信号和自定义信号、connect 的各种写法、一次性连接、"向下调用、向上发信号"的原则、事件总线,以及用 await 等待一个信号。
  5. 05向量、坐标与变换位置、速度、朝向都是向量;一个节点"在哪、朝哪、多大"合起来是一个 Transform2D。本章讲清 Vector2 的常用运算、本地坐标和全局坐标的换算,以及父子节点的变换是怎么一层层叠加的。

第二部分 · 2D 基础

  1. 06角色移动与跳跃手感用 CharacterBody2D 写一个手感好的平台跳跃角色:加速度和摩擦、由跳跃高度反推重力、下落加速、可变跳跃高度、土狼时间和跳跃缓冲。
  2. 07动画、补间与手感同样的移动参数,加上角色动画、Tween 补间、挤压拉伸、粒子、屏幕震动和命中停顿之后,游戏的"手感"会完全不同。本章讲清楚每种效果的原理和写法,并且都可以单独开关对比。
  3. 08TileMapLayer、相机与关卡用 TileSet 配置瓦片的碰撞、地形自动连接和自定义数据,用多个 TileMapLayer 搭关卡;再让 Camera2D 平滑跟随、限制边界、留出死区和前瞻,最后加上 Parallax2D 视差背景、移动平台、敌人和检查点,并初步认识碰撞层。

第三部分 · 2D 实战

  1. 09RPG(上):地图、移动与对话做一小块塞尔达风格的俯视角地图:用 Input.get_vector 做八方向移动并弄清斜向归一化,用 TileSet 和三层 TileMapLayer 搭地图,用 Y 排序让角色走到树后面,再用 Camera2D、Area2D 交互检测和自定义 Resource 做一套数据驱动的对话系统,最后用 autoload 保存全局状态。
  2. 10RPG(下):战斗、状态机与存档给俯视角 RPG 加上战斗:用两种写法实现有限状态机(enum + match 和"节点即状态")并比较优缺点,做敌人的感知、追击和丢失目标,用 Hitbox/Hurtbox 模式和规划好的碰撞层做攻击判定,加上击退和无敌帧;再做背包和 ItemData 资源,讲清共享资源的 duplicate 陷阱,最后用 JSON 存档并比较 ResourceSaver,实测 Web 上的 user://。
  3. 11三消(上):网格、交换与匹配算法把棋盘拆成"纯数据的 Board"和"只管显示的 Gem",然后依次实现网格与像素坐标的换算、点击和拖动交换、匹配扫描、L/T 形合并、开局不带三连的生成方法和可行步检测。
  4. 12三消(下):下落、连锁与动画消除之后的流程:双指针重力压缩、补充新宝石、用 await 把"交换 → 检测 → 消除 → 下落"串成连锁循环;Tween 的并行动画和 await finished、特殊宝石的链式触发、死局洗牌、计分倍数和星级评价。
  5. 13太空射击:对象池、碰撞层与粒子做一个纵版弹幕射击游戏。用对象池对付成百上千颗子弹,用 Area2D 和命名的碰撞层/遮罩安排"谁检测谁",用 Path2D 让敌人排队飞行,用极坐标写出环形、螺旋、自机狙弹幕,用数据资源描述波次,最后用 GPUParticles2D 和发光做出霓虹爆炸。
  6. 14UI、音频与游戏流程给太空射击加上"游戏外壳":用 Control、锚点和容器搭界面,用 Theme 和主题变体统一风格,让键盘和手柄都能操作菜单;用自动加载管理标题、游戏、暂停、结算几个状态,用 get_tree().paused 和 process_mode 实现暂停;建立音频总线和效果器,用 Python 程序化生成音效,处理 Web 上的自动播放限制,最后把最高分存进 user://。

第四部分 · 3D 实战

  1. 153D 基础:空间、相机、光照与材质从 2D 跨到 3D 要补的几块基础:右手坐标系和 -Z 前方、Transform3D 与 Basis、欧拉角和四元数、相机投影、光源和阴影、PBR 材质、WorldEnvironment,以及 Compatibility 渲染器在 3D 上能做什么、不能做什么。
  2. 16FPS(上):第一人称控制器用 CharacterBody3D 写一个完整的第一人称控制器:身体和头分开转、鼠标视角与 Web 上的鼠标锁定、加速度和摩擦、跳跃和重力、蹲下与头顶检测、镜头晃动、冲刺 FOV,以及帧率无关的平滑插值。
  3. 17FPS(下):武器、敌人与导航给控制器装上武器:两种射线检测、碰撞层规划、后坐力和散布、弹孔与命中反馈;再做会看、会追、会开枪的敌人:视线检测、状态机、运行时烘焙导航网格、NavigationAgent3D 寻路与避障,最后用 HUD 把信息告诉玩家。

第五部分 · 发布

  1. 18导出与发布:Web、桌面与移动端导出模板和资源包是怎么组合成游戏的;Web 导出的线程、响应头、体积、字体和浏览器限制;本站的网页参数桥是怎么实现的;桌面和移动端的发布要点。