在 脚本简介 中,您学习了如何在一段时间内循环修改体验。如果您想根据用户行为进行更改呢?在本教程中,您将学习如何制作一个致命的岩浆地面,当用户踏上时会被杀死。
设置
您需要在您的世界中放置致命的岩浆。如果您遵循了 脚本简介 的课程,岩浆地面就会很好地填补消失平台覆盖的缝隙。
插入一个 Part 并将其移动到您的世界中的合适位置。将其命名为 LavaFloor。
调整大小,使其覆盖封闭空间的地面。

通过将 Material 属性设置为 Neon 和 Color 设置为橙色阴影,使地面看起来更像岩浆。


将一个 脚本 插入到 LavaFloor 部件中,并将其重命名为 Kill。

删除默认代码并为岩浆创建一个变量。
local lava = script.Parent
连接到事件
使用 事件 检测用户何时触碰到岩浆。每个部件都有一个 Touched 事件,当某物触摸它时会触发。您可以 连接 到此事件,以便在触发时运行一个函数。
声明一个名为 kill 的新函数。
使用点符号访问岩浆对象上的 Touched 事件,就像访问一个属性一样:lava.Touched。
调用 Connect 函数在 Touched 事件上,传递 kill() 作为触碰该部件时调用的函数。
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
您在 kill 函数中编写的任何代码现在将在某物触摸岩浆时运行。请注意,对于 Connect 函数使用的是 冒号,而不是点符号 - 此时不必担心为什么,记住这个区别就可以了。
获取接触的部件
要杀死用户,函数需要与该用户相关联的对象。部件的 Touched 事件可以提供与其接触的"其他部件"——但前提是您通过将其作为函数的 参数 来请求它。
参数是函数在调用时期望接收的定义。参数可以像其他变量一样在函数中使用。您可以通过在调用函数时将其包含在括号中来向参数传递信息。参数在函数的第一行的括号中定义。为 kill 函数创建一个名为 otherPart 的 参数。
local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)
当调用 kill 函数时,otherPart 参数将表示接触到岩浆地面的部分,您在函数中编写的代码将能够使用它。
角色和人形
当用户触摸岩浆时,Roblox 可以检测到触摸它的用户的特定身体部位,例如左腿或右脚。该部件在用户的 Character 模型中,包含构成用户在体验中化身的所有对象,包括:
- 用户的各个身体部件,如头、四肢和躯干。
- 用户穿着的任何衣物和配饰。
- Humanoid,一个特殊对象,包含与用户相关的许多属性,包括用户的生命值。
- 控制用户移动的 HumanoidRootPart。
如前所述,任何触碰岩浆的身体部件都是 Character 模型的一部分,因此您可以通过 otherPart.Parent 获取对该角色的引用。创建一个变量以存储接触岩浆地面的部件的父对象。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)
从角色模型中,您需要获取 Humanoid 对象以便杀死用户。您可以使用 FindFirstChild() 函数做到这一点——只需传递您要查找的事物的名称,它将提供该对象中找到的第一个匹配子项。在 partParent 变量上调用 FindFirstChild(),将 "Humanoid" 作为要查找的子项,并将结果存储在一个名为 humanoid 的新变量中。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
end
lava.Touched:Connect(kill)
检查人形
您可以使用 if 语句轻松检查是否找到了 Humanoid。if 语句中的代码仅在第一行定义的条件为真时运行。
有多种 运算符 可用于构建更复杂的条件,您将在未来的课程中遇到 - 目前,只需将 humanoid 变量放在那里。创建一个将 humanoid 作为条件的 if 语句。
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
end
end
lava.Touched:Connect(kill)
设置角色生命值
现在已经检查了 Humanoid,可以更改其属性。如果您将其 Health 属性设置为 0,关联的角色就会死去。在 if 语句的主体中,将 humanoid 的 Health 属性设置为 0。
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)
这样,您的岩浆地面就完成了!测试您的体验,您会发现致命的岩浆在接触时成功杀死用户。尝试在一个障碍赛中使用您的岩浆作为额外挑战,或作为一个世界的边界。
最终代码
local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(kill)