开始之前
理解 for、table、Position、Size 和 Anchored。新建 Lesson08 Baseplate。
Roblox Studio · 第 8 课
用 Instance.new、Vector3 和循环生成阶梯,控制间距与高度,并把作品整理进 Folder。
Course overview
上节课让代码按顺序控制已有的路标。这次更进一步:让程序自己创建 Part,再计算每一级的位置。
你是这条阶梯的设计师。阶数、间距和高度都集中在脚本开头,改一个数字就能做出新版本。先做安全的小阶梯,再尝试更有挑战的路线。
理解 for、table、Position、Size 和 Anchored。新建 Lesson08 Baseplate。
运行后自动生成六级阶梯,全部放进 GeneratedStairs 文件夹。
Explorer 中正好六个 Step,阶梯不会掉落;Stop 后生成的对象消失。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
本课不需要手动建立六个 Part。保留 Baseplate 和 SpawnLocation,在 ServerScriptService 建立 BuildStairs 即可。
Instance.new("Part") 会创建一个新的 Part,但它还没有放进场景。把 Parent 设为 workspace 后,它才出现在 Workspace 中。
第 index 级的高度是 1 + index × RISE,前进距离是 -index × DEPTH。负 Z 方向是这张练习地图的前方,不代表所有相机画面的前方。
% 是取余数。这里 (index - 1) % 2 + 1 交替得到 1、2、1、2,因此会轮流取出两种颜色。先在纸上算 index 为 1、2、3 时的结果。
编辑者可以飞着看模型,玩家却要受碰撞、跳跃和重力限制。只有从出生点走一遍,才能判断你的间距与高度是否合适。
Step by step
本课不需要手动建立六个 Part。保留 Baseplate 和 SpawnLocation,在 ServerScriptService 建立 BuildStairs 即可。
先从出生点朝前留出约 40 studs 的空地。运行时创建的楼梯属于测试副本;保存脚本就保存了配方,不会把测试中的物体自动保存到编辑场景。

Step by step
Instance.new("Part") 会创建一个新的 Part,但它还没有放进场景。把 Parent 设为 workspace 后,它才出现在 Workspace 中。
先设置大小、位置和 Anchored,最后设置 Parent,可以让对象进入场景时就已经准备好。Name 是对象名字,不是创建它的类别。
local step = Instance.new("Part")
step.Name = "Step01"
step.Size = Vector3.new(8, 1, 5)
step.Position = Vector3.new(0, 2, -8)
step.Anchored = true
step.Parent = workspace
Step by step
第 index 级的高度是 1 + index × RISE,前进距离是 -index × DEPTH。负 Z 方向是这张练习地图的前方,不代表所有相机画面的前方。
完整脚本先创建 Folder,再把每一级放进去。这样你能折叠整条阶梯,也不会和手工搭建的 Part 混在一起。
local COUNT = 6
local RISE = 1.5
local DEPTH = 5
local colors = {
Color3.fromRGB(60, 160, 235),
Color3.fromRGB(90, 210, 175),
}
local stairs = Instance.new("Folder")
stairs.Name = "GeneratedStairs"
stairs.Parent = workspace
for index = 1, COUNT do
local step = Instance.new("Part")
step.Name = string.format("Step%02d", index)
step.Size = Vector3.new(8, 1, DEPTH)
step.Position = Vector3.new(0, 1 + index * RISE, -index * DEPTH)
step.Color = colors[(index - 1) % #colors + 1]
step.Anchored = true
step.Parent = stairs
end
print("Created steps:", #stairs:GetChildren())
Step by step
% 是取余数。这里 (index - 1) % 2 + 1 交替得到 1、2、1、2,因此会轮流取出两种颜色。先在纸上算 index 为 1、2、3 时的结果。
string.format("Step%02d", index) 把数字写成两位,生成 Step01 这样的名字。它只是让 Explorer 更整齐,不会改变楼梯的行为。
Step by step
编辑者可以飞着看模型,玩家却要受碰撞、跳跃和重力限制。只有从出生点走一遍,才能判断你的间距与高度是否合适。
如果高度太大,先把 RISE 调回 1.5。如果楼梯散落,检查每个新 Part 是否设置 Anchored,而不是只给 Folder 起了一个“固定”的名字。
Homework
生成 8 级阶梯,使用三种交替颜色。
算出第 4 阶的 Y、Z 坐标,再在运行中的 Properties 检查。
新增 WIDTH 常量,把写死的宽度 8 替换为 WIDTH,并比较两种宽度。
Exit questions
对象还没有设置到可见场景的 Parent,或位置不在视野内。
固定是每个 Part 的属性,Folder 不会替所有子对象固定。
不是。它由运行中的脚本生成,Stop 后测试副本被还原;脚本仍保留配方。
不需要,循环会按新的数量创建八级。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。