Commencer
Tutoriels intermédiaires

Piège de dissipation

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Dans Lave Mortelle, vous avez appris à déclencher du code en fonction du comportement de l'utilisateur. Ce tutoriel vous montre comment créer une plateforme qui disparaît lorsque qu'un utilisateur marche dessus.

Configuration

Si vous avez suivi Lave Mortelle, vous pouvez placer votre plateforme de dissipation au-dessus du sol de lave que les utilisateurs ne peuvent pas traverser.

  1. Insérez une partie et déplacez-la à sa place dans votre monde. Nommez-la FadingPlatform.

  2. Redimensionnez-la pour qu'un utilisateur puisse sauter dessus.

  3. Assurez-vous qu'elle soit Ancrée.

  4. Insérez un Script dans la partie, renommez-le en FadeOnTouch, et supprimez le code par défaut.

  5. Créez une variable pour la plateforme et une fonction vide connectée à l'événement Touched de la plateforme.


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

Estomper la plateforme

Faire disparaître la plateforme en un instant ne serait pas amusant, car les utilisateurs trouveraient impossible de traverser le vide. Au lieu de cela, la plateforme devrait s'estomper avant que les utilisateurs ne tombent à travers pour leur donner une chance de sauter.

Vous pourriez modifier la propriété Transparency et attendre très peu de temps encore et encore pour obtenir cet effet, mais un estompement graduel nécessiterait au moins 10 changements entre 0 et 1. Cela représenterait 20 lignes de code très répétitif.

Cela peut être réalisé de manière beaucoup plus efficace à l'aide d'une boucle for qui répète du code un certain nombre de fois. Chaque exécution du code est connue sous le nom d'itération. Une boucle for est définie avec trois choses, séparées par des virgules :

  • Variable de contrôle - La variable créée et utilisée pour compter les boucles. Dans cet exemple, c'est count et la valeur de départ est 1.
  • Valeur finale - La valeur qu'elle doit atteindre pour que la boucle s'arrête. Dans cet exemple, c'est 10.
  • Incrément de pas (facultatif) - Détermine ce qu'il faut ajouter à la variable de contrôle à chaque boucle. Si omis, il par défaut à 1, donc dans cet exemple, c'est inutile.

Dans FadeOnTouch :

  1. Dans la fonction, créez une boucle for commençant à 1 qui itère 10 fois.

  2. Dans la boucle for, définissez la propriété Transparency à la variable de contrôle divisée par 10.

  3. Appelez la fonction task.wait() avec un temps 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)

Lorsque la boucle s'exécute, le compte augmente de 1 à chaque itération. Cela signifie que la Transparency de la plateforme augmentera de 0.1 toutes les 0.1 secondes, atteignant la transparence totale après 1 seconde.

Réapparaître

Après que la plateforme a disparu, les utilisateurs devraient tomber à travers. La plateforme devrait également revenir quelques secondes après avoir disparu - sinon, les utilisateurs n'auraient jamais l'occasion d'essayer le saut à nouveau s'ils échouent. La propriété CanCollide contrôle si les utilisateurs peuvent traverser une partie.

  1. Réglez la propriété CanCollide de la plateforme sur false après la boucle for.

  2. Attendez quelques secondes en utilisant la fonction task.wait().

  3. Rétablissez la propriété CanCollide sur true.

  4. Réglez la propriété Transparency sur 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

Dans Lave Mortelle, vous avez appris que l'événement Touched s'exécute chaque fois qu'une partie du corps d'un utilisateur entre en contact avec la partie. Ce comportement cause des problèmes lorsque qu'un utilisateur court sur la plateforme de dissipation : la fonction s'exécute plusieurs fois, réinitialisant la boucle à chaque fois.

Pour que le code fonctionne correctement, la fonction ne doit s'exécuter qu'une seule fois lorsque l'utilisateur touche la plateforme pour la première fois. S'assurer qu'une action ne soit déclenchée qu'une fois alors qu'elle serait autrement déclenchée plusieurs fois s'appelle le debounce.

Pour debounce une fonction, une variable booléenne peut être utilisée pour suivre si la plateforme a déjà été touchée. Les booléens peuvent contenir uniquement les valeurs true et false. Créez une variable appelée isTouched et définissez-la à 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)

Vérifiez la variable

Une déclaration if peut être utilisée pour exécuter le code dans la fonction d'estompement uniquement si la variable de debounce isTouched est false. Entourez le corps de la fonction fade d'une déclaration if avec la condition 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)

L'opérateur not de Luau inverse la valeur de ce qui le suit. En termes conditionnels, cela signifie que la première instruction if se comporte de la même manière que les déclarations qui suivent.


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

Basculer le debounce

Actuellement, le code dans la fonction fade s'exécutera toujours car isTouched est false et not isTouched évalue à true. Pour compléter la routine debounce, vous devrez basculer la valeur de la variable à deux endroits.

  1. Réglez isTouched sur true à l'intérieur de l'instruction if, avant que la plateforme ne commence à s'estomper.
  2. Réglez-le à nouveau sur false une fois que la plateforme a réapparu.

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)

Et c'est tout ! Testez votre code maintenant, et vous devriez constater que la plateforme disparaît lorsque l'utilisateur saute dessus et revient quelques secondes plus tard.

Vous pouvez dupliquer cette plateforme sur un plus grand écart pour créer un obstacle difficile et changer la vitesse à laquelle elles s'estompent pour équilibrer la difficulté.

Code 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 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.