致命的熔岩

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

介绍脚本 中,你学到了如何在时间循环中对体验进行更改。如果你想根据用户行为进行更改,该怎么办?在本教程中,你将学习如何制作致命的熔岩地板,当用户踩到它时会杀死他们。

设置

你需要在你的世界中找到一个地方来放置致命的熔岩。如果您遵循了 介绍脚本 课程,熔岩地板将很好地适合消失的平台所覆盖的空隙。

  1. 插入一个 Part 并将其移到你的世界中。命名为 LavaFloor

  2. 将其缩放以覆盖包围空间的地板。

  3. 通过设置 Material 属性为 Neon 并将 Color 调为橙色阴影来让地板看起来更像熔岩。

  4. 脚本 插入到 LavaFloor 部分,并将其重命名为 Kill

  5. 移除默认代码并为熔岩创建变量。


    local lava = script.Parent

连接到事件

使用 事件 检测用户触摸熔岩时。每个部分都有一个 Touched 事件,当有物体触碰它时触发。您可以 连接 到此事件,在发射时运行函数。

  1. 宣言一个新函数叫 kill

  2. 使用 dot 访问熔岩对象上的 Touched 事件,就像属性一样: lava.Touched .

  3. Connect 事件上调用 Touched 函数,传递 kill() 作为触碰零件时调用的函数。


    local lava = script.Parent
    local function kill()
    end
    lava.Touched:Connect(kill)

你在 kill 函数中写的任何代码现在将在任何东西触碰熔岩时运行。请注意, 撇号 用于 Connect 函数, 不是 一点 - 不要担心为什么在这一点上,只需记住差异。

获取触摸部分

要杀死用户,函数需要与该用户相关的对象。零件的 Touched 事件可以提供触摸它的“其他零件”—但只有如果您通过将其作为函数的 参数 来请求它。

参数是函数在调用时期望收到的定义。参数可以像其他任何变量一样在函数中使用。您可以通过在函数调用时将其包含在括号中将信息传递给参数。参数在函数的第一行上的括号中定义。创建一个 参数 被称为 otherPartkill 函数。


local lava = script.Parent
local function kill(otherPart)
end
lava.Touched:Connect(kill)

kill 函数被调用时,otherPart 参数将代表触碰熔岩地板的部分,你在函数中写的代码将能够使用它。

角色和人形怪物

当用户触摸熔岩时,Roblox 可以检测到用户触摸它的特定身体部位,例如左腿或右脚。该部分属于用户的 角色 模型,包含构成体验中用户虚拟形象的所有对象,包括:

  • 用户的个人身体部位,例如头、肢体和躯干。
  • 用户穿戴的任何服装和饰品。
  • The Humanoid , 一种特殊对象,包含与用户相关的许多属性,包括用户的健康。
  • 控制用户移动的人形根部件。

如前所述,触摸熔岩的任何身体部位都属于角色模型,因此您可以使用 otherPart.Parent 获得该角色的参考。创建一个变量来存储触碰熔岩地板的零件父级。


local lava = script.Parent
local function kill(otherPart)
local partParent = otherPart.Parent
end
lava.Touched:Connect(kill)

从角色模型,你需要获取人形对象以便杀死用户。您可以使用 FindFirstChild() 函数来执行此操作—只需将它传给寻找的东西的名称,它将提供它在该对象中找到的第一个匹配子对象。调用 FindFirstChild()partParent 变量上将 "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


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)