渐变陷阱

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

Deadly Lava中,你学会了根据用户行为触发代码。此教程向你展示了如何创建一个平台,当用户踩到它时会逐渐消失。

设置

如果您跟随 致命熔岩,您可以将您的渐渐消失的平台放置在用户无法跳过的熔岩地板上。

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

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

  3. 确保它是 锚定

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

  5. 为平台创建一个变量,并连接平台的 Touched 事件。


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

平台渐变

在一秒内平台消失将不再是玩家所能接受的娱乐活动,因为用户将发现无法通过此间隙。相反,平台应该 消失 ,在用户通过它而给他们提供跳关闭的机会。

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

这可以通过使用 循环来更有效地实现。这种循环使用特定数量的次数重复代码。每个循环的代码都被称为 次数 。一个 for 循环由三个部分组成:

  • 控制变量 - 创建和使用来计数循环的变量。在此示例中,它是 count ,起始值是 1 。
  • 结束值 - 它必须得到循环停止的值。 在此示例中,它是 10。
  • 步骤增量 (可选) - 确定要在每个循环中添加控制变量。如果未设置,它将默认为 1,因此在此示例中不是必要的。

FadeOnTouch 中:

  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事件每次用户的身体部分与零件接触时会发生。这种行为会在用户在�ading平台上运行时导致问题:功能将在多次重置循环。

为了使代码正常运行,函数只需要在用户触摸平台时第一次运行。确保操作只会在多次触摸时触发时才会触发一次是知道为 弹跳

要将函数弹出,一个 Boolean 变量可以用来跟踪平台是否已触摸。只有 Booleans 可以包含 真 和 假 值。创建一个名为 2> isTouched2> 的变量,并将其设置为 5> 8>假8>。


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 变量是否弹出,可以使用 if 语句仅在渐变函数中运行代码。将渐变函数的 body 包含在 if 语句中,并使用 not isTouched 条件包含 1> isTouch1> 。


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)

Lua not 操作器将操作后跟随的值反向。在条件性语条款中,这意味着第一个 if 语句与跟关注的语句保持相同。


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

切换弹跳

当前,fade 函数中的代码将始终运行,因为 isTouched 是 false 和 not isTouched 评估为 true。要完成 debounce 路径,您需要在两个位置切换变量的值。

  1. isTouched 设置为 trueif 声明中,平台开始渐渐消失。
  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)