褪色陷阱

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

致命熔岩 中,你学会了根据用户行为触发代码的方法。本教程向您展示如何制作一个平台,当用户踩到它时会消失。

设置

如果你遵循了 致命熔岩,你可以将褪色平台放在用户无法跳过的熔岩地板上。

  1. 插入零件并将其移入你的世界中。命名为 FadingPlatform

  2. 将其缩放以便用户可以跳上它。

  3. 确保它是 锚定 的。

  4. 脚本 插入零件,重命名为 FadeOnTouch 并移除默认代验证码。

  5. 为平台创建一个变量和一个空函数,连接到平台的 Touched 事件。


    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

淡化平台

平台在一瞬间消失将不会很有趣,因为用户将发现无法穿过差距。相反,平台应该在用户通过它之前 消失 ,给他们一个跳关闭的机会。

您可以更改 Transparency 属性并等待很短的时间反复获得此效果,但渐变需要至少在 0 和 1 之间进行 10 次更改。这是 20 行非常重复的代验证码。

这可以通过使用 for 循环来实现得更有效,该循环会重复地重复代码特定数量次。代码的每个循环都被称为 循环 。循环 A 由三个东西定义,用逗号分开:

  • 控制变量 - 用于计数循环的变量。在这个例子中,它是count,起始值是 1。
  • 结束值 - 循环停止所需的值。在这个例子中,它是 10。
  • 步增量 (可选)-决定每个循环要添加到控制变量中的内容。如果被忽略,它默认为 1,因此在这个例子中是不必要的。

在触摸时褪色 :

  1. 在函数中,创建一个 for 循环,从 1 开始迭代 10 次。

  2. 在 for 循环内,将 Transparency 属性设置为控制变量除以 10

  3. 调用 task.wait() 函数以时间 0.1


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

当循环运行时,每次迭代增加 1 个计数。这意味着平台的 Transparency 每 0.1 秒会增加 0.1,1 秒后达到完全透明。

重出现

平台消失后,用户应该通过它掉落。平台还应在褪色后的几秒钟内返回 - 否则,用户将永远无法再次尝试跳跃,如果他们失败。CanCollide 属性控制用户是否可以通过零件掉落。

  1. 将平台的 CanCollide 属性设置为 false 在 for 循环后。

  2. 使用 task.wait() 函数等待几秒钟。

  3. CanCollide属性设置回到true

  4. Transparency属性设置回到0


    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    platform.CanCollide = false
    task.wait(3)
    platform.CanCollide = true
    platform.Transparency = 0
    end
    platform.Touched:Connect(fade)

减缓变量

致命熔岩 中,你学到了每当用户的身体部分与零件接触时,Touched事件都会运行。这种行为在用户穿越褪色平台时会导致问题:函数会多次运行,每次重置循环。

为了代码正常运行,函数只应在用户第一次触摸平台时运行一次。确保一个行动只在一次触发时触发,而不是多次触发,被称为 减震

要减缓函数,一个 boolean 变量可以用来跟踪平台是否已被触碰。布林元素只能包含 truefalse 值。创建一个名为 isTouched 的变量并将其设置为 false .


local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)

检查变量

如果声明可以用于仅在淡化函数中运行代码,如果 isTouched 缓冲变量为 false,则可以使用。将渐变函数的体积包装在 if 声明中,条件为 not isTouched


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)

Luau not 运营符反转其后面的任何值。在条件限制条款,这意味着第一个 if 声明与关注下来的声明相同。


if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

切换缓冲

目前,fade 函数中的代码始终会运行,因为 isTouched 为 false,而 not isTouched 评估为 true。要完成缓冲程序,你需要在两个地方切换变量的值。

  1. 将 设置为 在 声明开始消失之前,在平台开始消失之前将其设置为
  2. 将其恢复到 false 一旦平台重新出现后。

local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)

就是这样!现在测试你的代码,你应该发现平台在用户跳上它并在几秒钟后返回时消失了。

您可以将此平台复制到更大的间隙上,创建一个具有挑战性的障碍并改变它们褪色的速度来平衡难度。

最终代验证码


local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)