开始之前
理解事件、boolean 和第 14 课灯光。新建 Lesson21 Baseplate。
Roblox Studio · 第 21 课
在 StarterPack 中创建 Tool 和 Handle,通过装备、使用与卸下事件控制 SpotLight。
Course overview
营地路灯不会跟着你走,手电筒可以。Tool 会把道具加入背包,并提供装备、使用和卸下这些事件。
先做一个简单的长方体手电,不下载未知的工具脚本。你能解释每个对象的用途,比拥有一个复杂模型更重要。
理解事件、boolean 和第 14 课灯光。新建 Lesson21 Baseplate。
可装备的手电筒,使用时切换 SpotLight,卸下时自动关闭。
工具不把角色钉住、不掉落;卸下再装备时灯保持关闭。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
在 StarterPack 创建 Tool,玩家出生时它会进入背包。默认 RequiresHandle=true 时,需要一个名字精确为 Handle 的 BasePart。
SpotLight.Face=Front 表示沿 Handle 的本地前面照射,不一定等于你想象的角色前方。工具的握持朝向由 Grip 等属性影响。
Activated 表示玩家使用已装备工具,Unequipped 表示卸下。我们用一份 boolean 保留灯的状态,并让关闭逻辑集中在 turnOff。
未装备时,Tool 通常在玩家 Backpack 中;装备时,它移到 Character。StarterPack 中的是出生时使用的模板。
手电不应该大到挡住整块屏幕,也不应该因为一个锚定属性让角色不能走。先检查体验,再加装饰。
Step by step
在 StarterPack 创建 Tool,玩家出生时它会进入背包。默认 RequiresHandle=true 时,需要一个名字精确为 Handle 的 BasePart。
Handle 不能 Anchored,否则可能影响角色移动。把它设为 CanCollide=false、Massless=true,减少它与角色和地面的物理冲突。

Step by step
SpotLight.Face=Front 表示沿 Handle 的本地前面照射,不一定等于你想象的角色前方。工具的握持朝向由 Grip 等属性影响。
先用简单形状验证方向。若光照向脚下,调整 Tool 的握持朝向,而不是把亮度越调越大。
Step by step
Activated 表示玩家使用已装备工具,Unequipped 表示卸下。我们用一份 boolean 保留灯的状态,并让关闭逻辑集中在 turnOff。
这段普通 Script 在服务器改变灯,因此它是其他玩家也能看见的道具效果。单纯个人手电也可以有另一种设计,但不要混淆两种需求。
local tool = script.Parent
local handle = tool:WaitForChild("Handle")
local light = handle:WaitForChild("Beam")
local isOn = false
local function turnOff()
isOn = false
light.Enabled = false
end
tool.Activated:Connect(function()
local character = tool.Parent
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
isOn = not isOn
light.Enabled = isOn
end)
tool.Unequipped:Connect(turnOff)
turnOff()
Step by step
未装备时,Tool 通常在玩家 Backpack 中;装备时,它移到 Character。StarterPack 中的是出生时使用的模板。
因此修改长期版本要在 Stop 后回到 StarterPack,而不是只改运行时背包里那份副本。角色重生后会重新得到模板中的工具。
Step by step
手电不应该大到挡住整块屏幕,也不应该因为一个锚定属性让角色不能走。先检查体验,再加装饰。
如果添加外壳等额外零件,需要把它们用 WeldConstraint 连接到 Handle,并检查是否仍有 Anchored 的部分。初学版本先保留单个 Handle。
Homework
把 Beam.Color 改成柔和暖色,比较路面是否仍清楚。
比较 Range=16 与 24,选一个适合营地大小的范围。
开灯时把 Tool.Name 改为“手电 · 开”,关灯时恢复,并检查背包文字。
Exit questions
被装备的工具需要随角色运动,锚定可能限制或破坏角色移动。
不是,Equipped 是装备,Activated 是使用已装备的工具。
让工具回到明确的默认状态,避免卸下后仍留着效果。
Stop 后修改 StarterPack 中的模板。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。