减少玩家生命值的陷阱是一个有趣的游戏元素,可以用条件语句编写。 使用条件语句创建一个部分,当触摸时将玩家的生命值设置为零。
设置陷阱
陷阱在与移动基础挑战相关的体验中表现非常好,例如障碍赛。这些步骤将通过设置必要的变量和函数来开始。不要先查看代码箱。
创建并命名一个陷阱部分。 将脚本插入部分。
在脚本中,添加描述性评论,然后使用变量引用脚本的父元素级。
-- 如果玩家触摸此部件,将其生命值设置为 0local trapPart = script.Parent创建一个名为 onTouch() 的函数,并在参数上命名为 otherPart。
-- 如果玩家触摸此部件,将其生命值设置为 0local trapPart = script.Parentlocal function onTouch(otherPart)end将函数连接到陷阱部件的 Touched 事件,以便在任何时候触摸到零件。
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
检查玩家触摸
记住,参数 otherPart 记录触发陷阱部分的任何触摸,这可能是玩家的一部分或仅是底板。
为了确保陷阱只会击败玩家,而不会击败随机装饰物品,请使用 if/then 语句来检查 otherPart 中是否包含人形对象。
寻找特定对象
函数 FindFirstChildWhichIsA() 可以用于查找特定对象类型,这很方便,因为我们正在寻找一个人形对象类型。玩家可能只会触摸触摸的部分,因此必须设置变量来找到触摸部分的父级并搜索它。
在 onTouch() 中,输入 local character = otherPart.Parent 。
local trapPart = script.Parentlocal function onTouch(otherPart)-- 找到其他部分的父对象local character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)检查,看 whether character 有一个 Humanoid 通过输入:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
使用 if 语句检查
如果找到一个人形,那么将其人形的生命值设置为零。
使用 if 语句检查是否成功将 Humanoid 分配到 local humanoid 。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 评估是否找到了一个人形if humanoid thenendendtrapPart.Touched:Connect(onTouch)添加打印声明,然后检查代码。
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 评估是否找到了一个人形if humanoid thenprint("Found a Humanoid")endendtrapPart.Touched:Connect(onTouch)运行 代码,并检查您可以看到玩家触摸零件时的输出。
改变玩家的生命值
如果声明是真的,你可以使用同一个人形变量将玩家的健康设置为 0。
在 then 和 end 之间,输入 humanoid.Health = 0。
已完成脚本local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- 评估是否找到了一个人形if humanoid thenprint("Found a Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)测试陷阱。
概要
这个陷阱部分使用条件来检测人形部件,并将人形部件的健康设置为零。 此脚本是基于以前的陷阱脚本的改进,它摧毁了任何触摸对象,无论它是什么。
它仍然有一些缺点。 人形怪物不仅仅在玩家中存在。 人形怪物还可以在非玩家角色中找到。 脚本只能将玩家的健康设置为零。 你可以尝试减去一小部分的生命值,但它可能会减去更快的速度。 稍后的课程提供更多改进,以提供更大的控制过程中要减去的生命值。