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 l'utilisateur marche dessus.
Configuration
Si vous avez suivi Lave Mortelle, vous pouvez placer votre plateforme de disparition au-dessus du sol de lave que les utilisateurs ne peuvent pas sauter.
Insérez une pièce et déplacez-la à sa place dans votre monde. Nommez-la FadingPlatform.
Redimensionnez-la pour qu'un utilisateur puisse sauter dessus.
Assurez-vous qu'elle est Ancrée.

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

Créez une variable pour la plateforme et une fonction vide connectée à l'événement Touched de la plateforme.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Faire disparaître 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 disparaître progressivement avant que les utilisateurs ne tombent à travers pour leur donner une chance de sauter.
Vous pourriez changer la propriété Transparency et attendre un très court instant encore et encore pour obtenir cet effet, mais une disparition progressive nécessiterait au moins 10 changements entre 0 et 1. Cela représente 20 lignes de code très répétitif.
Cela peut être réalisé beaucoup plus efficacement en utilisant une boucle for qui répète le code un nombre spécifique de fois. Chaque boucle du code est connue sous le nom d'itération. Une boucle for est définie avec trois éléments, séparés 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 de fin - La valeur qu'elle doit atteindre pour que la boucle s'arrête. Dans cet exemple, c'est 10.
- Incrément de pasOPTIONNEL- Détermine ce qu'il faut ajouter à la variable de contrôle à chaque boucle. Si elle est omise, elle est par défaut à 1, donc dans cet exemple, elle est inutile.
Dans FadeOnTouch :
Dans la fonction, créez une boucle for commençant à 1 qui s'itère 10 fois.
À l'intérieur de la boucle for, définissez la propriété Transparency sur la variable de contrôle divisée par 10.
Appelez la fonction task.wait() avec un temps de 0.1.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Lorsque la boucle s'exécute, count augmente de 1 à chaque itération. Cela signifie que la Transparency de la plateforme augmentera de 0.1 toutes les 0.1 secondes, atteignant une 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 la chance d'essayer le saut à nouveau s'ils échouent. La propriété CanCollide contrôle si les utilisateurs peuvent tomber à travers une pièce.
Définissez la propriété CanCollide de la plateforme sur false après la boucle for.
Attendez quelques secondes en utilisant la fonction task.wait().
Réglez la propriété CanCollide sur true.
Réglez la propriété Transparency sur 0.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.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 pièce. Ce comportement pose des problèmes lorsque l'utilisateur court sur la plateforme de disparition : la fonction s'exécutera 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 seule fois lorsqu'elle serait autrement déclenchée plusieurs fois est connu sous le nom de debounce.
Pour débouncer une fonction, une variable booléenne peut être utilisée pour suivre si la plateforme a déjà été touchée. Les booléens ne peuvent contenir que des valeurs true et false. Créez une variable appelée isTouched et définissez-la sur 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érifier la variable
Une instruction if peut être utilisée pour n'exécuter le code dans la fonction fade que si la variable de debounce isTouched est false. Enveloppez le corps de la fonction fade dans une instruction 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 Luau not 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 instructions qui suivent.
if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
endBasculer 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 de debounce, vous devrez basculer la valeur de la variable à deux endroits.
- Définissez isTouched sur true à l'intérieur de l'instruction if, avant que la plateforme ne commence à disparaître.
- Réinitialisez-le à 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 à travers un plus grand vide pour créer un obstacle difficile et changer la vitesse à laquelle elles disparaissent 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)