5 分钟跑通 Godot 官方示例项目:零基础的第一套练手模板
【免费下载链接】godot-demo-projectsDemonstration and Template Projects项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects
这是 Godot 引擎的官方示例项目库:一百多个独立可运行的 Demo,覆盖 2D、3D、移动端、音频到联网。读完这篇,你能自己跑起四个方向的 Demo,并看懂它们源码里的关键几行。
先跑起来:5 分钟看到画面 🎮
先把画面跑出来,理解的事往后放。这份 Godot 官方 Demo 库的结构很简单,每个子目录都是一个完整工程,各自带 project.godot:
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/go/godot-demo-projects - 用 Godot 打开你想玩的子目录(比如
2d/dodge_the_creeps),不用管仓库根目录。 - 按 F5。绝大多数 Demo 零配置直接能玩。
不知道从哪玩起的话,先试这三个:
- 2D 入门:2d/dodge_the_creeps/,躲弹幕的小游戏,最快让你熟悉场景树和信号。
- 3D 入门:3d/squash_the_creeps/,同一个主题的 3D 版本,顺便看看相机和灯光怎么摆。
- 移动端入门:mobile/multitouch_cubes/,多点触控推动方块,直接感受触摸输入和鼠标的差别。
让 NPC 绕开障碍自己找路 🧭
看完这节,你能自己写出"点一下地面,角色自动避开障碍走过去"。
它管的事是:开放世界里 NPC 不能靠手摆关键帧,得有一套寻路系统——先标出哪些格子走不了,再算出最短路线,最后让角色沿着路线滑过去。
示例项目在 2d/navigation_astar/ 和 2d/navigation/,是两份 Godot 2D 导航示例:前者基于网格 A* 寻路,适合 tilemap 地图;后者用导航多边形加智能体,适合开放 2D 场景。3D 版在 3d/navigation/,地图大时看分块方案 3d/navigation_mesh_chunks/ 和 2d/navigation_mesh_chunks/。
读哪几个文件:核心是 pathfind_astar.gd,全部围绕一个AStarGrid2D对象:
var _astar := AStarGrid2D.new() _astar.region = Rect2i(0, 0, 18, 10) _astar.cell_size = Vector2i(64, 64)声明好区域和格子大小,把实心格标成不可通行,点击时取路径点序列,character.gd 只负责在物理帧里朝下一个途经点移动。3D 侧重点看 navmesh.gd:鼠标射线怎么投到导航网格上、烘焙出的 NavMesh 怎么被角色追路。
| 做法 | 适用地图 | 关键类 |
|---|---|---|
| 网格 A* | tilemap / 格状地图 | AStarGrid2D |
| 导航多边形 + 智能体 | 开放 2D 场景 | NavigationRegion2D、NavigationAgent2D |
| 导航网格 NavMesh | 复杂 3D 地形 | NavigationServer3D |
让碰撞、关节和车轮都按真实物理走 🧱
看完这节,物理参数不用再猜,每种行为都有可运行的对照场景。
它管的事是:碰撞形状、关节链、单向平台、车轮摩擦——新手最容易"看起来对、实际不对"的一堆点。官方的物理测试集按"一个案例一个场景"的方式写,每个参数的预期表现一目了然。
示例项目在 2d/physics_tests/ 和 3d/physics_tests/,两边都有主菜单,可以直接跳进单个案例运行。想做平台跳跃就去 2d/physics_platformer/,里面演示了刚体角色配合平台、跷跷板的完整玩法;关节、斜坡、移动平台的案例都放在 2d/physics_tests/tests/functional/ 里现成可跑。
读哪几个文件:先看2d/physics_tests/tests/functional/test_joints.gd,它只是创建几种关节然后看链条怎么摆动,真正的参数在配套的 test_joints.tscn 里的 Joint2D 节点上。再看 test_raycasting.gd,射线每帧探测地面,这个"脚下检测"的思路在 3D 侧的3d/physics_tests/tests/functional/test_rigidbody_ground_check.gd里同样能找到。
给场景补上全局光照和电影感滤镜 ✨
看完这节,你知道 Godot 全局光照设置该拨哪个开关,也能用十几行着色器给画面套一层滤镜。
它管的事分两半:一是光本身,直射光只照亮表面,"墙把光弹回地面"的那层柔光得靠全局光照补;二是画面后处理,老胶片、模糊、海市蜃楼这类效果和灯光无关,是屏幕空间着色器的活。
示例项目在 3d/global_illumination/:一个场景里就能在光贴图、VoxelGI、SDFGI 之间来回切着看差别。2D 光照和遮挡看 2d/lights_and_shadows/,精灵级的溶解、描边、发光在 2d/sprite_shaders/,全屏滤镜在 2d/screen_space_shaders/,一共 11 个现成效果。
读哪几个文件:3d/global_illumination/test.gd开头有个GIMode枚举,脚本按枚举顺序逐个切换 GI 模式,读它就能弄清每种模式的观感差异怎么来的。着色器那边直接打开2d/screen_space_shaders/shaders/old_film.gdshader,单文件不到 50 行,噪点加暗角的组合方式最典型。
把手机传感器和跨平台输入接进游戏 📱
看完这节,你能让手机倾斜控制 3D 场景,还有一套现成的键位重映射和分辨率适配方案可抄。
它管的事是:手机上光靠虚拟按键不够,得读加速度计、重力、陀螺仪的原始数据;键盘、手柄、触摸又是三种设备,同一套"动作"要映射一次、到处通用。
示例项目在 mobile/sensors/,这是一份 Godot 移动端传感器演示,把手机转向,3D 场景里的方块就跟着你的姿态走。键位重映射界面在 gui/input_mapping/,多分辨率和像素风适配在 gui/multiple_resolutions/,多点触控手势看 mobile/multitouch_cubes/。
读哪几个文件:mobile/sensors/main.gd里三个原始数据一次拿齐:
var acc := Input.get_accelerometer() var grav := Input.get_gravity()脚本把这两个向量换算成旋转矩阵去驱动方块朝向,文件注释还解释了为什么陀螺仪要单独积分——它是角速度而不是方向。输入映射读 gui/input_mapping/ActionRemapButton.gd,看一个按钮怎么监听任意按键并写回输入表。
一张表看懂全部示例
上面没展开的部分,按这张表随取随用:
| 目录 | 解决的问题 | 什么时候看 |
|---|---|---|
| audio/ | 音效、BPM 同步、麦克风录音、MIDI | 给游戏配乐配音效时 |
| networking/ | 多人联机、WebSocket 聊天 | 需要两个以上玩家时 |
| gui/ | 字体、主题、文本、分辨率适配 | 做 UI 界面时 |
| loading/ | Autoload、线程加载、运行时存档 | 需要存档或异步加载时 |
| viewport/ | 分屏、3D 里嵌 2D、屏幕捕获 | 做同屏多人或特殊镜头时 |
| compute/ | 计算着色器生成高度图、纹理 | 追求极限性能时 |
| xr/ | VR/AR、OpenXR 交互与手势 | 做头显游戏时 |
| mono/ | 上述 Demo 的 C# 版本 | 习惯 C# 而非 GDScript 时 |
| plugins/ | 编辑器插件开发 | 想扩展编辑器功能时 |
| misc/ | 多窗口、手柄、HDR 输出 | 碰到冷门需求时 |
| 2d/finite_state_machine/ | 角色行为状态机 | 做动作控制时 |
| 2d/role_playing_game/ | 网格 RPG、回合制战斗、对话 | 做 RPG 时 |
最短学习路线
- 玩:把 2d/dodge_the_creeps/ 和 2d/physics_tests/ 各跑一遍,只动手不读码。
- 读:对照 docs/official.md 过一遍核心概念,再挑一个导航 Demo 逐行跟读。
- 试:把 2d/sprite_shaders/ 里的一个着色器挂到自己的精灵上,或用 3d/global_illumination/ 对比一轮 GI 效果。
- 查:API 找不到去 doc/api/ 翻,缺现成能力去 plugins/addons/ 逛一圈。
- 挑战:从上表挑一个还没读过的 Demo,先读它的 README,再读代码。
走完这条线,导航、物理、光影、输入四条核心脉络就都过手一遍,下次卡壳时,回这份 Godot 官方示例项目库里找对应 Demo 抄参数就行。
【免费下载链接】godot-demo-projectsDemonstration and Template Projects项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考