Tutoriales intermedios

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 piso de lava que los usuarios no pueden saltar.

  1. Inserta una parte y muévela a su lugar en tu mundo. Asígnale el nombre 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, cámbiale el nombre a FadeOnTouch y elimina el código por defecto.

  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 inmediato no sería divertido, ya que los usuarios encontrarían imposible cruzar el vacío. 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 puede lograrse 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 al que debe llegar 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, por defecto es 1, por lo que en este ejemplo no es necesario.

En FadeOnTouch:

  1. En la función, crea un bucle for comenzando desde 1 que itera 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 que se desvanezca; 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 nuevamente en true.

  4. Establece la propiedad Transparency nuevamente 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 a través de 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 debe ejecutarse una vez cuando el usuario toca la plataforma por primera vez. Asegurar que una acción solo se desencadene una vez cuando de otro modo se desencadenaría múltiples veces se conoce como debouncing.

Para debounce una función, se puede usar una variable boolean para controlar cuándo la plataforma ya ha sido tocada. Los booleanos solo pueden contener valores true y false. Crea una variable llamada isTouched y establece su valor 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)

Revisar la variable

Se puede utilizar una declaración if para ejecutar el código en la función fade solo si la variable de debounce isTouched es falsa. Envuelve el cuerpo de la función fade 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 a continuación. En términos condicionales, esto significa que la primera declaración if se comporta igual 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. Establécelo 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 descubrir que la plataforma se desvanece cuando el usuario salta sobre ella y vuelve unos segundos después.

Puedes duplicar esta plataforma en un espacio 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.