如果/然后使用陷阱

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

减少玩家生命值的陷阱是一个有趣的游戏元素,可以用条件语句编写。 使用条件语句创建一个部分,当触摸时将玩家的生命值设置为零。

设置陷阱

陷阱在与移动基础挑战相关的体验中表现非常好,例如障碍赛。这些步骤将通过设置必要的变量和函数来开始。不要先查看代码箱。

  1. 创建并命名一个陷阱部分。 将脚本插入部分。

  2. 在脚本中,添加描述性评论,然后使用变量引用脚本的父元素级。


    -- 如果玩家触摸此部件,将其生命值设置为 0
    local trapPart = script.Parent
  3. 创建一个名为 onTouch() 的函数,并在参数上命名为 otherPart


    -- 如果玩家触摸此部件,将其生命值设置为 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. 将函数连接到陷阱部件的 Touched 事件,以便在任何时候触摸到零件。


    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
    trapPart.Touched:Connect(onTouch)

检查玩家触摸

记住,参数 otherPart 记录触发陷阱部分的任何触摸,这可能是玩家的一部分或仅是底板。

为了确保陷阱只会击败玩家,而不会击败随机装饰物品,请使用 if/then 语句来检查 otherPart 中是否包含人形对象。

寻找特定对象

函数 FindFirstChildWhichIsA() 可以用于查找特定对象类型,这很方便,因为我们正在寻找一个人形对象类型。玩家可能只会触摸触摸的部分,因此必须设置变量来找到触摸部分的父级并搜索它。

  1. onTouch() 中,输入 local character = otherPart.Parent


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- 找到其他部分的父对象
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. 检查,看 whether character 有一个 Humanoid 通过输入:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid")


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    end
    trapPart.Touched:Connect(onTouch)

使用 if 语句检查

如果找到一个人形,那么将其人形的生命值设置为零。

  1. 使用 if 语句检查是否成功将 Humanoid 分配到 local humanoid


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 评估是否找到了一个人形
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. 添加打印声明,然后检查代码。


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 评估是否找到了一个人形
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. 运行 代码,并检查您可以看到玩家触摸零件时的输出。

改变玩家的生命值

如果声明是真的,你可以使用同一个人形变量将玩家的健康设置为 0。

  1. thenend 之间,输入 humanoid.Health = 0

    已完成脚本

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- 评估是否找到了一个人形
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. 测试陷阱。

概要

这个陷阱部分使用条件来检测人形部件,并将人形部件的健康设置为零。 此脚本是基于以前的陷阱脚本的改进,它摧毁了任何触摸对象,无论它是什么。

它仍然有一些缺点。 人形怪物不仅仅在玩家中存在。 人形怪物还可以在非玩家角色中找到。 脚本只能将玩家的健康设置为零。 你可以尝试减去一小部分的生命值,但它可能会减去更快的速度。 稍后的课程提供更多改进,以提供更大的控制过程中要减去的生命值。