首页/ 第 13 章 · 2D 游戏开发/ 第 218 课
LESSON 218 · 2D 游戏开发

2D 关卡设计

关卡设计已掌握。下一课做 2D HUD 与计分。

⏱ 约 15 分钟📊 难度:入门🗂 第 13 章 · 2D 游戏开发📍 第 218 / 300 课
课程进度
218 / 300

🎯本节学习目标

  • 掌握关卡布局
  • 掌握难度曲线
  • 实现检查点

🚀课程导读

“好玩的关卡”有套路:有节奏、有变化、有惊喜。本课学关卡设计的“心法+技法”。

关卡布局原则

让玩家“有节奏”。

  1. 【节奏】关卡像音乐:简单段(跑跳)→ 挑战段(跳跃难点)→ 喘息段(安全区)→ 高潮段(Boss)。
  2. 【引导】用金币/装饰引导玩家走向正确方向。
  3. 【教学】第一屏教“跳跃”,第二屏教“双段跳”,循序渐进。
  4. 【难度曲线】先易后难:每个新机制先“简单试用”再“组合挑战”。
  5. 【奖励】难度挑战后给奖励(道具/捷径)。
  6. 【变化】避免“复制粘贴”式平台,变换高度/间距/组合。
  7. 【长度】2-5 分钟的关卡节奏最佳(跑酷短关 1-2 分钟)。
  8. 【回看】设计完自己玩一遍,哪里“烦”就改哪里。
  9. 【注意】别让玩家“不知道该去哪”——留出明确前进方向。
  10. 【工具】纸上画草图(platforming 设计稿)再进 Unity。
  11. 【完成】关卡“有魂”了!
💡
关卡心法:节奏(松紧交替)+ 教学(先易后难)+ 引导(金币指路)。

检查点与多关卡

死亡不重来。

  1. 【检查点 Checkpoint】旗帜:玩家触碰后重生点更新:
  2. public class Checkpoint : MonoBehaviour {
  3. public Transform player;
  4. void OnTriggerEnter2D(Collider2D other) {
  5. if (other.CompareTag("Player")) {
  6. PlayerController pc = other.GetComponent<PlayerController>();
  7. pc.UpdateSpawn(transform.position);
  8. /* 飘旗动画 */
  9. }
  10. }
  11. }
  12. 【玩家重生】Respawn 用最新 spawnPoint(第 210 课改造)。
  13. 【存档检查点】跨会话:PlayerPrefs 存检查点 ID(第 238 课)。
  14. 【多关卡】场景分开(每关一个场景)或一个大场景(区域解锁)。
  15. 【场景切关】到达终点触发切场景(第 235 课)。
  16. 【关卡数据】用 ScriptableObject 定义每关配置(敌人、金币数)(第 85 课)。
  17. 【选择界面】关卡选择:按钮 + 解锁状态(第 150 课)。
  18. 【完成】关卡体系完整!
关卡体系 = 检查点(中途存) + 切关(终点) + 选关(入口)。三环相扣。

常见错误与排查

错误:检查点失效?
原因:玩家没引用或重生点没更新
解决:确认 Checkpoint 引用玩家;玩家 UpdateSpawn 更新 spawnPoint 变量。

动手练习

课后小任务(做出来才算真的学会)

  • 设计一个有节奏的关卡草图
  • 实现检查点旗帜
  • 实现多关卡切换

本节小结

关卡设计已掌握。下一课做 2D HUD 与计分。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课Tilemap 瓦片地图