Trampa desapariciendo

*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 el código basado en el comportamiento del usuario.Este tutorial te muestra cómo hacer una plataforma que desaparece cuando un usuario pisa sobre ella.

Establecer

Si siguiste Lava mortal, puedes colocar tu plataforma desapariciendo por encima del suelo de lava que los usuarios no pueden saltar.

  1. Inserta una parte y muévela al lugar en tu mundo. Nombrarla FadingPlatform .

  2. Redimensionarlo para que un usuario pueda saltar sobre él.

  3. Asegúrate de que sea Anclado .

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

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


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

Desaparecer la plataforma

Tener que desaparecer la plataforma en un instante no sería divertido en absoluto, ya que los usuarios encontrarían imposible cruzar la brecha.En cambio, la plataforma debe desaparecer antes de que los usuarios fallen a través de ella para darles una oportunidad de desactivado.

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

Esto se puede lograr de manera mucho más efectiva usando un bucle para 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 A 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 tiene que obtener para que la 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 deja fuera, se predetermina a 1, por lo que en este ejemplo es innecesario.

En FadeOnTouch :

  1. En la función, crea un bucle for que comienza con 1 que se repite 10 veces.

  2. Dentro del bucle for, establece la propiedad Transparency a 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, el recuento aumenta en 1 con cada iteración.Esto significa que la plataforma de Transparency aumentará en 0.1 cada 0.1 segundos, alcanzando la transparencia completa después de 1 segundo.

Aparecer de nuevo

Después de que la plataforma haya desaparecido, los usuarios deberían caer a través de ella.La plataforma también debería volver a unos pocos segundos después de que desaparezca - de lo contrario, los usuarios nunca llegarían a probar el salto de nuevo si fracasaran.La propiedad CanCollide controla si los usuarios pueden caer a través de una parte.

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

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

  3. Establece la propiedad CanCollide de vuelta a true.

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

Variante 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 se ejecuta a través de la plataforma desapareciente: la función se ejecutará varias 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 active una vez cuando de lo contrario se activaría múltiples veces se conoce como desactivación .

Para debujar una función, una variable boolean se puede usar para rastrear cuándo la plataforma ya ha sido tocada.Los booleanos solo pueden contener verdadero y falso valores.Crea una variable llamada isTouched y ponla 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)

Compruebe la variable

Una declaración if se puede usar para ejecutar solo el código en la función de desbobinar si la variable de rebote isTouched es falsa.Envuelve el cuerpo de la función de desaparición 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 Luau not revertirá el valor de lo que siga a él.En términos condicionales, esto significa que la primera declaración if se comporta igual que las declaraciones que seguir.


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

Alterna el debounce

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

  1. Establece isTouched dentro de la declaración true dentro de la declaración if antes de que la plataforma comience a desaparecer.
  2. Devuélvelo a 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 desaparece cuando el usuario salta sobre ella y vuelve en unos segundos más tarde.

Puedes duplicar esta plataforma a través de un espacio más amplio para crear un desafiante obstáculo y cambiar la velocidad a la que desaparecen 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)