← 所有教程
第 1 篇教程

做出你的第一个 obby

一条有熔岩、检查点、会消失的平台和终点线的障碍赛道。

免费45 分钟 · 新手 · Roblox Studio
1
第 1 / 10

新建一个场景

  1. 打开 Roblox Studio 并登录。
  2. 点击 New Experience,然后选择 Baseplate 模板。
  3. 现在你有了一块平平的灰色地面。你的赛道就建在它上面。

更多细节

  • Roblox Studio 是适用于 Windows 和 Mac 的免费程序。如果还没有安装,请从 create.roblox.com 下载,并用你的 Roblox 账号登录。
  • Baseplate 模板在开始页面的模板列表里。它显示的是一块空的灰色地面。
  • 场景会在一个标签页里打开。标签页的名字就是你的场景的名字。
  • 在 Mac 上,每当教程说 Ctrl 的时候,都改用 Cmd 键。
小提示. 经常用 File → Save to Roblox 保存。Studio 会保留旧版本,所以你随时可以回到以前的样子。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

2
第 2 / 10

认识三个面板

  1. 中间那个大大的 3D 画面是 Viewport。这就是你的游戏世界。
  2. Explorer 列出游戏里的所有物体。Properties 显示你选中的物体的各种设置。
  3. 移动镜头:按住鼠标右键可以四处看,用 W A S D 飞行,用 Q 和 E 下降和上升。
  4. 迷路了?选中任意一个 Part,然后按 F。镜头会立刻跳到它那里。

更多细节

  • Explorer 和 Properties 在窗口的右边。Explorer 在上面,Properties 在它下面。
  • 在 Viewport 里点一个物体,它在 Explorer 里也会高亮。在 Explorer 里点它的名字,它在 Viewport 里也会被选中。
  • 那块上面有圆形符号的平平的平台就是 SpawnLocation。游戏开始时,玩家会出现在它上面。别动它。
  • 做错了?按 Ctrl+Z 撤销你做的上一件事。再按一次,就再退回一步。
小提示. 如果某个面板不见了,可以从 Window 菜单里打开。在旧版本里,它在 View 选项卡中。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

3
第 3 / 10

做出起点平台

  1. 在 Home 选项卡上点击 Part。一个灰色的方块出现了。
  2. 在 Properties 里把 Size 设为 12, 1, 12,并把这个 Part 重命名为 Start。
  3. 打开 Anchored。被锚定的 Part 不会掉下去,也不会移动。
  4. 用 Color 按钮选一个你喜欢的颜色。

更多细节

  • 新的零件会出现在镜头前面,它在 Explorer 里的名字是 Part。
  • 要改名,在 Explorer 里点它一下,按 F2,输入 Start,然后按 Enter。
  • 在 Properties 里点 Size 栏,输入 12, 1, 12,然后按 Enter。这三个数字分别是宽、高和深。
  • Anchored 是 Properties 里的一个复选框。打上勾就表示打开了。
  • 用 Move 工具(Ctrl+2)把平台放到 SpawnLocation 旁边,这样玩家就能走上去。
常见错误. 忘记打开 Anchored。你在编辑的时候它看起来没问题,可是游戏一开始,它就掉进虚空里了。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

4
第 4 / 10

加上跳跃平台

  1. 选中 Start,按 Ctrl+D 复制它。用 Move 工具(Ctrl+2)把复制出来的那个往前拉。
  2. 用 Scale 工具(Ctrl+3)把它变小。大小设为 6, 1, 6 就很合适。
  3. 平台之间留出 5 到 7 studs 的空隙。重复这样做,直到有 6 到 8 个平台。
  4. 把其中几个平台抬高一点,让赛道一路向上。

更多细节

  • 复制品会正好出现在原件上面,所以看起来好像什么都没发生。拖动 Move 工具的蓝色或红色箭头,复制品就会滑出来。
  • 用 Scale 工具,拖动零件上的小圆球就能改变它的大小。你也可以直接在 Properties 里输入大小。
  • Properties 里的 Position 栏显示零件在哪里。比较两个平台的数字,就能量出它们之间的空隙。
  • 每个平台都必须 Anchored。被锚定的零件的复制品也是被锚定的,所以只需要检查你新建的零件。
  • 按 F5 自己试一试这些跳跃,按 Shift+F5 停止。每做两三个平台就试一次。
小提示. 默认的角色能跳 7.2 studs 高,向前能跳过大约 8 studs。空隙超过 8 studs 几乎不可能跳过去。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

5
第 5 / 10

加上会让玩家重新开始的熔岩

  1. 在两个平台之间新建一个 Part。把它设成红色,把 Material 设为 Neon,打开 Anchored,并命名为 Lava。
  2. 在 Explorer 里把鼠标移到 Lava 上,点击 + 按钮,选择 Script。
  3. 删掉里面已有的那一行,然后粘贴下面的代码。
Lava > Script
local lava = script.Parent

lava.Touched:Connect(function(hit)
	local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
	if humanoid then
		humanoid.Health = 0
	end
end)

每一部分的作用

  • script.Parent 是这个脚本所在的 Part。这里就是熔岩。
  • Touched 会在每次有东西碰到这个 Part 时运行。hit 就是碰到它的那个东西,比如一只脚。
  • hit.Parent 是整个角色。如果它里面有 Humanoid,就说明这是一位玩家,所以脚本会把 Health 设为 0。

更多细节

  • Material 是 Properties 里的一个列表。点开它,选择 Neon。Neon 会让零件发光。
  • 添加 Script 以后,它会在新的标签页里打开,里面有一行代码。点一下代码里面,按 Ctrl+A 全选,再按 Ctrl+V 粘贴覆盖。
  • 点一下写着你的场景名字的标签页,就回到你的世界了。
  • 测试一下:按 F5,走进熔岩。你的角色会散开,然后在起点重新出现。
  • 把熔岩做得又宽又扁,比如 Size 12, 1, 6,再放得比平台低一点,这样没跳过去的人就会掉进去。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

6
第 6 / 10

加上检查点

  1. 在 Explorer 里把鼠标移到 Workspace 上,点击 + 并添加一个 Folder。把它命名为 Checkpoints。
  2. 沿着赛道放三个被锚定的 Part,并把它们拖进这个文件夹。把它们命名为 1、2 和 3。1 号放在起点平台上。
  3. 把鼠标移到 ServerScriptService 上,点击 + 并添加一个 Script。粘贴下面的代码。
ServerScriptService > Script
local Players = game:GetService("Players")
local checkpoints = workspace:WaitForChild("Checkpoints")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local stage = Instance.new("IntValue")
	stage.Name = "Stage"
	stage.Value = 1
	stage.Parent = stats

	player.CharacterAdded:Connect(function(character)
		local root = character:WaitForChild("HumanoidRootPart")
		local point = checkpoints:FindFirstChild(tostring(stage.Value))
		if point then
			task.wait(0.1)
			root.CFrame = point.CFrame + Vector3.new(0, 4, 0)
		end
	end)
end)

for _, point in ipairs(checkpoints:GetChildren()) do
	point.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		local stats = player and player:FindFirstChild("leaderstats")
		if not stats then return end

		local number = tonumber(point.Name)
		if number == stats.Stage.Value + 1 then
			stats.Stage.Value = number
		end
	end)
end

每一部分的作用

  • leaderstats 是一个特殊的文件夹名字。里面的值会显示在玩家列表中,所以每个人都能看到自己的 Stage。
  • 角色出生时,脚本会把它移到名字和玩家的 Stage 相同的那个检查点。
  • 碰到检查点时,只有它是下一个检查点,Stage 才会加一。这样玩家就不能跳过前面的关卡。

更多细节

  • Folder 可以放其他物体,就像电脑里的文件夹一样。它自己在游戏里什么也不做。
  • 要把零件拖进文件夹,就在 Explorer 里把它的名字拖到 Checkpoints 这个名字上,然后松手。这个零件就会向右缩进一格,位于文件夹下面。
  • 把检查点零件做得又薄又宽,比如 Size 6, 0.4, 6,然后放在平台上面。换一种颜色,玩家会更容易注意到它们。
  • 测试一下:按 F5,看右上角的玩家列表。它显示 Stage 1。碰一下 2 号检查点,它就变成 2。
  • 检查点必须按顺序碰。先碰 3 再碰 2 是没有用的。
常见错误. 把这些 Part 命名为 Checkpoint1 或 One。脚本要找的是准确的名字 1、2 和 3。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

7
第 7 / 10

做一个会消失的平台

  1. 在赛道中间选一个平台,给它添加一个 Script。
  2. 粘贴下面的代码,然后按 Play,看它一闪一闪的。
Platform > Script
local platform = script.Parent

while true do
	task.wait(2)
	platform.Transparency = 1
	platform.CanCollide = false

	task.wait(2)
	platform.Transparency = 0
	platform.CanCollide = true
end

每一部分的作用

  • while true do 会一直重复下去。
  • task.wait(2) 会暂停 2 秒。
  • Transparency 设为 1 会让这个 Part 变成透明的。CanCollide 设为 false 会让玩家从它里面掉下去。

更多细节

  • 要添加 Script,把鼠标移到 Explorer 里平台的名字上,点 +,选择 Script,和你给熔岩做的一样。
  • 平台会显示 2 秒,再消失 2 秒。玩家要算准时间再跳。
  • 第一个数字是平台显示的时间。第二个数字是它消失的时间。
  • 不要把这个脚本放在起点平台或检查点里,否则玩家一到就会掉下去。
小提示. 改一改这两个数字,平台就会变快或变慢。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

8
第 8 / 10

做出终点线

  1. 在赛道尽头放一个大的、被锚定的 Part,并命名为 Finish。把它设成金色,这样玩家一眼就能看到目标。
  2. 给 Finish 添加一个 Script,并粘贴下面的代码。
Finish > Script
local Players = game:GetService("Players")
local finish = script.Parent
local cooldown = {}

finish.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or cooldown[player] then return end

	cooldown[player] = true
	stats.Stage.Value = 1
	player:LoadCharacter()

	task.wait(2)
	cooldown[player] = nil
end)

每一部分的作用

  • GetPlayerFromCharacter 用来找出是哪位玩家碰到了终点。
  • cooldown 表可以防止代码在同一秒里运行很多次。
  • Stage 会回到 1,LoadCharacter 会把玩家送回起点,再跑一圈。

更多细节

  • 要把它变成金色,点 Properties 里的 Color 栏,选一个黄色。Material 设为 Neon 会让它闪闪发亮。
  • Size 12, 1, 12 做终点很合适。把它放在最后一次跳跃之后,比其他的稍微高一点。
  • 测试一下:按 F5,跑完赛道,踩上金色的零件。你会回到起点,Stage 又变回 1。
  • 设置 2 秒的冷却时间,是因为踩一步就会多次碰到这个零件。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

9
第 9 / 10

测试你的游戏

  1. 按 F5 开始玩。从头到尾跑完整条赛道。
  2. 故意掉进熔岩里。你应该会回到你最后到达的检查点。
  3. 按 Shift+F5 停止。
  4. 从 Window 菜单里打开 Output 窗口。红色的文字表示脚本出错了,它还会告诉你出错的行号。

更多细节

  • F5 会带着你的角色开始游戏。游戏运行时,工具栏会变。
  • 游戏运行时做的修改,停止后就会丢失。一定要先按 Shift+F5,再去修改。
  • 在 Output 窗口里点一下红色的那一行,Studio 就会打开脚本,并跳到出错的那一行。
  • 出问题时先检查三件事:零件的名字、脚本放在哪里,还有 Anchored 有没有打开。
常见错误. 游戏一开始平台就掉下去了:说明 Anchored 没有打开。碰到 Part 却什么都没发生:说明脚本放错了物体,或者某个名字拼错了。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

10
第 10 / 10

发布它

  1. 选择 File → Publish to Roblox。给游戏起一个名字,再写一段简短的介绍。
  2. 在 Creator Hub 网站上打开你的游戏,填写 Maturity 问卷。Roblox 需要这份问卷,别人才能玩你的游戏。
  3. 把游戏设为 Public,然后把链接发给一位朋友。

更多细节

  • 第一次发布时,Studio 会问你要一个名字和一段介绍。点 Create。以后用 File → Publish to Roblox 就能发送你最新的修改。
  • Creator Hub 就是网站 create.roblox.com。用同一个账号登录,然后在列表里点你的游戏。
  • Maturity 问卷会问你的游戏里有什么内容。请如实回答。像这样的 obby 没有暴力,也没有吓人的东西。
  • 游戏公开之前,Roblox 可能还会要求更多信息,比如对账号做年龄验证。页面会告诉你还缺什么。
  • 如果你不满 18 岁,请和家长一起完成这一步。
小提示. 请朋友来玩,你在旁边看。他们卡住的地方,就是你最先要修改的地方。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

现在自己改一改

  • 再加一个第四个检查点。你要把它命名为什么?
  • 做三个会消失的平台,让它们以不同的速度一闪一闪。
  • 改一改熔岩,让它只扣掉一半的生命值。提示:humanoid.Health = humanoid.Health - 50