Trampa de desvanecimiento

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

En Lava Mortal, aprendiste cómo activar código basado en el comportamiento del usuario. Este tutorial te muestra cómo hacer una plataforma que se desvanece cuando un usuario pisa sobre ella.

Configuración

Si seguiste Lava Mortal, puedes colocar tu plataforma de desvanecimiento sobre el suelo de lava que los usuarios no pueden saltar.

  1. Inserta una parte y muévela a su lugar en tu mundo. Nómbrala FadingPlatform.

  2. Redimensiona la parte para que un usuario pueda saltar sobre ella.

  3. Asegúrate de que esté Anclada.

  4. Inserta un Script en la parte, renómbralo a FadeOnTouch, y elimina el código predeterminado.

  5. Crea una variable para la plataforma y una función vacía conectada al evento Touched de la plataforma.

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

Desvanecer la plataforma

Hacer que la plataforma desaparezca de un instante a otro no sería divertido, ya que los usuarios encontrarían imposible cruzar el hueco. En su lugar, la plataforma debería desvanecerse antes de que los usuarios caigan a través de ella para darles una oportunidad de saltar.

Podrías cambiar la propiedad Transparency y esperar un tiempo muy corto una y otra vez para obtener este efecto, pero un desvanecimiento gradual requeriría al menos 10 cambios entre 0 y 1. Eso son 20 líneas de código muy repetitivo.

Esto se puede lograr de manera mucho más efectiva utilizando un bucle for que repite el código un número específico de veces. Cada bucle del código se conoce como una iteración. Un bucle for se define con tres cosas, separadas por comas:

  • Variable de control - La variable creada y utilizada para contar los bucles. En este ejemplo, es count y el valor inicial es 1.
  • Valor final - El valor que debe alcanzar para que el bucle se detenga. En este ejemplo, es 10.
  • Incremento de paso
    OPCIONAL
    - Determina qué agregar a la variable de control en cada bucle. Si se omite, se establece en 1, por lo que en este ejemplo es innecesario.

En FadeOnTouch:

  1. En la función, crea un bucle for que comience desde 1 y que itere 10 veces.

  2. Dentro del bucle for, establece la propiedad Transparency en la variable de control dividida por 10.

  3. Llama a la función task.wait() con un tiempo de 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)

Cuando se ejecuta el bucle, count aumenta en 1 con cada iteración. Esto significa que la Transparency de la plataforma aumentará en 0.1 cada 0.1 segundos, alcanzando la transparencia total después de 1 segundo.

Reaparecer

Después de que la plataforma ha desaparecido, los usuarios deberían caer a través de ella. La plataforma también debería volver unos segundos después de desvanecerse; de lo contrario, los usuarios nunca tendrían la oportunidad de intentar el salto nuevamente si fallan. La propiedad CanCollide controla si los usuarios pueden caer a través de una parte.

  1. Establece la propiedad CanCollide de la plataforma en false después del bucle for.

  2. Espera unos segundos usando la función task.wait().

  3. Establece la propiedad CanCollide de nuevo en true.

  4. Establece la propiedad Transparency de nuevo en 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)

Variable de debounce

En Lava Mortal, aprendiste que el evento Touched se ejecuta cada vez que una parte del cuerpo de un usuario entra en contacto con la parte. Este comportamiento causa problemas cuando un usuario corre sobre la plataforma que se desvanece: la función se ejecutará múltiples veces, reiniciando el bucle cada vez.

Para que el código funcione correctamente, la función solo debería ejecutarse una vez cuando el usuario toca la plataforma por primera vez. Asegurar que una acción solo se active una vez cuando de otro modo se activaría múltiples veces se conoce como debounce.

Para debilitar una función, se puede usar una variable boolean para hacer un seguimiento de cuándo la plataforma ya ha sido tocada. Los booleanos solo pueden contener valores true y false. Crea una variable llamada isTouched y configúrala en 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)

Comprobar la variable

Se puede usar una declaración if para ejecutar el código en la función de desvanecimiento solo si la variable de debounce isTouched es falsa. Envuelve el cuerpo de la función de desvanecimiento en una declaración if con la condición 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)

El operador not de Luau invierte el valor de lo que sigue. En términos condicionales, esto significa que la primera declaración if se comporta de la misma manera que las declaraciones que siguen.

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

Alternar el debounce

Actualmente, el código en la función fade siempre se ejecutará porque isTouched es falso y not isTouched evalúa como verdadero. Para completar la rutina de debounce, necesitarás alternar el valor de la variable en dos lugares.

  1. Establece isTouched en true dentro de la declaración if, antes de que la plataforma comience a desvanecerse.
  2. Establece de nuevo en false una vez que la plataforma haya reaparecido.
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)

¡Y eso es todo! Prueba tu código ahora, y deberías encontrar que la plataforma se desvanece cuando el usuario salta sobre ella y vuelve unos segundos después.

Puedes duplicar esta plataforma a través de un hueco más amplio para crear un obstáculo desafiante y cambiar la velocidad a la que se desvanecen para equilibrar la dificultad.

Código final

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)
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.