在 介绍脚本 中,你学到了如何在时间循环中对体验进行更改。如果你想根据用户行为进行更改,该怎么办?在本教程中,你将学习如何制作致命的熔岩地板,当用户踩到它时会杀死他们。
设置
你需要在你的世界中找到一个地方来放置致命的熔岩。如果您遵循了 介绍脚本 课程,熔岩地板将很好地适合消失的平台所覆盖的空隙。
插入一个 Part 并将其移到你的世界中。命名为 LavaFloor 。
将其缩放以覆盖包围空间的地板。
通过设置 Material 属性为 Neon 并将 Color 调为橙色阴影来让地板看起来更像熔岩。
将 脚本 插入到 LavaFloor 部分,并将其重命名为 Kill 。
移除默认代码并为熔岩创建变量。
local lava = script.Parent
连接到事件
使用 事件 检测用户触摸熔岩时。每个部分都有一个 Touched 事件,当有物体触碰它时触发。您可以 连接 到此事件,在发射时运行函数。
宣言一个新函数叫 kill 。
使用 dot 访问熔岩对象上的 Touched 事件,就像属性一样: lava.Touched .
在 Connect 事件上调用 Touched 函数,传递 kill() 作为触碰零件时调用的函数。
local lava = script.Parentlocal function kill()endlava.Touched:Connect(kill)
你在 kill 函数中写的任何代码现在将在任何东西触碰熔岩时运行。请注意, 撇号 用于 Connect 函数, 不是 一点 - 不要担心为什么在这一点上,只需记住差异。
获取触摸部分
要杀死用户,函数需要与该用户相关的对象。零件的 Touched 事件可以提供触摸它的“其他零件”—但只有如果您通过将其作为函数的 参数 来请求它。
参数是函数在调用时期望收到的定义。参数可以像其他任何变量一样在函数中使用。您可以通过在函数调用时将其包含在括号中将信息传递给参数。参数在函数的第一行上的括号中定义。创建一个 参数 被称为 otherPart 的 kill 函数。
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)