第 11 课：检查点：失败后从这里再出发

请先阅读对应网页。这里按章节提供代码，可能包含先后替换的实验版本，不要全部同时运行。
.luau 文件内容请复制到指定 Script / LocalScript / ModuleScript；.txt 是层级或说明，不是可执行代码。
第 25 课默认 PRACTICE=true，不连接云端，也不跨 Stop 保存。第 28 课包含明确标注的故意错误实验。

01 · 必须使用 SpawnLocation
把已有 SpawnLocation 改名 StartSpawn，Position 设为 0, 0.5, 0。
插入第二个 SpawnLocation，命名 Checkpoint，Position 设为 0, 0.5, -30。
两者 Anchored=true、Neutral=true、AllowTeamChangeOnTouch=false；Checkpoint.CanTouch=true、Enabled=false。
在 ServerScriptService 创建 CheckpointManager。

02 · 把检查点记在玩家身上
粘贴完整脚本。
Play 后先别走到检查点，重置一次角色，确认还在起点。
再走到 Checkpoint，看 Output 是否显示激活消息。

文件：02-script.luau
位置与用途：ServerScriptService > CheckpointManager · 完整脚本

03 · 分清个人进度与共享外观
运行时在服务器视角查看 Players 下自己的 RespawnLocation。
激活前它指向 StartSpawn，激活后指向 Checkpoint。
检查点不是立即传送按钮，赋值后只有下一次重生才用到它。

04 · 在两个出生点之间搭一小段路
起点到检查点之间加三个 Anchored 平台。
测试检查点周围至少能安全站立和转身。
本课保留 Baseplate，通过重置角色测试，不必先制造危险落差。

05 · 试一次“双人不同进度”
A 激活后重置，应出现在 Checkpoint。
B 不激活直接重置，应出现在 StartSpawn。
停止测试再开始，确认起点规则恢复。

