开始之前
会搭建平台,理解 Player 与 Character。使用独立 Lesson11 Baseplate。
Roblox Studio · 第 11 课
用 SpawnLocation 与 RespawnLocation 保存本次游戏的检查点,测试重生与重新进入的区别。
Course overview
一条有挑战的路线,也可以对玩家很友好。检查点能记住这次游戏里你走到了哪里,让失败变成一次短短的重试。
这一课不靠移动相机制造“重生效果”,而是使用 Roblox 的 SpawnLocation 和玩家的 RespawnLocation。
会搭建平台,理解 Player 与 Character。使用独立 Lesson11 Baseplate。
一个起点和一个可激活的检查点,两处都能正确出生。
先在起点出生,激活后重生在检查点;另一名玩家不会被一起更改。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
普通 Part 可以作为视觉标记,却不能直接赋给 RespawnLocation。你需要两个真正的 SpawnLocation 对象。
player.RespawnLocation 保存的是一个出生点对象引用。它属于这个玩家,不属于所有玩家共享的 Workspace。
如果在服务器把检查点变绿,所有人都会看见绿色。这并不表示所有人都激活了它。判定个人进度时,要看对应 Player.RespawnLocation。
现在再加入三个宽平台,把检查点放在完成第一段挑战之后。先确保单独重生功能可靠,再让关卡变难。
多人检查最能发现“把一个人的进度写成全局变量”的错误。A 激活检查点,B 仍在起点,两人的重生位置应不同。
Step by step
普通 Part 可以作为视觉标记,却不能直接赋给 RespawnLocation。你需要两个真正的 SpawnLocation 对象。
为了避免首次出生随机选择检查点,将起点 Enabled=true、检查点 Enabled=false。玩家激活时再开启检查点,并且给每位新玩家明确指定 StartSpawn。
Step by step
player.RespawnLocation 保存的是一个出生点对象引用。它属于这个玩家,不属于所有玩家共享的 Workspace。
脚本也会给新加入的玩家指定起点。因此即使别人已经开启 Checkpoint,后来进入的玩家仍从 StartSpawn 开始。
local Players = game:GetService("Players")
local startSpawn = workspace:WaitForChild("StartSpawn")
local checkpoint = workspace:WaitForChild("Checkpoint")
local function setupPlayer(player)
player.RespawnLocation = startSpawn
end
Players.PlayerAdded:Connect(setupPlayer)
for _, player in ipairs(Players:GetPlayers()) do setupPlayer(player) end
checkpoint.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
local player = character and Players:GetPlayerFromCharacter(character)
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not player or not humanoid or humanoid.Health <= 0 then return end
if player.RespawnLocation == checkpoint then return end
checkpoint.Enabled = true
player.RespawnLocation = checkpoint
print(player.Name, "Checkpoint activated")
end)

Step by step
如果在服务器把检查点变绿,所有人都会看见绿色。这并不表示所有人都激活了它。判定个人进度时,要看对应 Player.RespawnLocation。
因此本课不把全场景变绿当作“我已保存”的证据。先读 Output 和玩家属性;等学会 LocalScript 后,就能制作只给自己看的提示。
Step by step
现在再加入三个宽平台,把检查点放在完成第一段挑战之后。先确保单独重生功能可靠,再让关卡变难。
出生点上方要有空间,不要贴着低屋顶或夹在墙里。角色出现时需要安全站立,不能刚出生又立刻掉下去。
Step by step
多人检查最能发现“把一个人的进度写成全局变量”的错误。A 激活检查点,B 仍在起点,两人的重生位置应不同。
这只是本次会话的记录。Stop 后重新进入,新的 Player 仍从 StartSpawn 开始;这与第 10 课金币的生命周期相似。
Homework
给检查点增加一个宽平台和明显路标,保证出生后不被遮挡。
分别记录激活前、激活后、重新 Play 的出生位置。
复制一个新的 SpawnLocation,并为它添加独立触碰处理;先画清两个检查点的顺序。
Exit questions
不可以,需要 SpawnLocation。
不会,它决定下一次重生的位置。
避免其他已开启出生点让新玩家随机出生到中途。
不一定,共享颜色与每位玩家的 RespawnLocation 是两种状态。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。