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 plate-forme qui disparaît lorsqu'un utilisateur marche dessus.
Mettre en place
Si vous avez suivi Lave mortelle, vous pouvez placer votre plate-forme disparition au-dessus du plancher de lave que les utilisateurs ne peuvent pas sauter.
Insérez une partie et déplacez-la dans votre monde. Nommez-la FadingPlatform .
Redimensionnez-le pour qu'un utilisateur puisse y sauter.
Assurez-vous qu'il est ancré .
Insérez un script dans la partie, renommez-le en FadeOnTouch et supprimez le code par défaut.
Créer une variable pour la plate-forme et une fonction vide connectée à l'événement de la plateformeTouched.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Fade la plateforme
Disparaître la plate-forme en un instant ne serait pas du tout amusant car les utilisateurs trouveraient impossible de traverser le fossé.Au lieu de cela, la plate-forme devrait disparaître avant que les utilisateurs ne tombent à travers elle pour leur donner une chance de off.
Vous pourriez modifier la propriété Transparency et attendre très peu de temps encore et encore pour obtenir cet effet, mais un déclin progressif nécessiterait au moins 10 changements entre 0 et 1.C'est 20 lignes de code très répétitif.
Cela peut être réalisé beaucoup plus efficacement en utilisant une boucle pour qui répète le code un nombre spécifique de fois.Chaque boucle du code est connue sous le nom d'une itération .La boucle A 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'il 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.S'il est laissé de côté, il se définit par défaut sur 1, donc dans cet exemple, c'est inutile.
Dans FadeOnTouch :
Dans la fonction, créez une boucle for commençant par 1 qui itère 10 fois.
À l'intérieur de la boucle for, définissez la propriété Transparency à la variable de contrôle divisée par 10.
Appellez 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, le nombre augmente de 1 à chaque itération.Cela signifie que la plateformede Transparency augmentera de 0,1 toutes les 0,1 secondes, atteignant la transparence complète après 1 seconde.
Réapparaître
Une fois que la plate-forme a disparu, les utilisateurs devraient tomber à travers elle.La plate-forme devrait également revenir quelques secondes après qu'elle disparaisse - sinon, les utilisateurs ne pourraient jamais essayer de sauter à nouveau s'ils échouaient.La propriété CanCollide contrôle si les utilisateurs peuvent tomber à travers une partie.
Définissez la propriété CanCollide de la plate-forme à false après la boucle for.
Attendez quelques secondes en utilisant la fonction task.wait().
Définissez la propriété CanCollide de retour à true.
Définissez la propriété Transparency de retour à 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)
Variante de débounce
Dans lave mortelle, vous avez appris que l'événement Touched se produit chaque fois que la partie du corps d'un utilisateur entre en contact avec la partie.Ce comportement cause des problèmes lorsqu'un utilisateur court sur la plateformedéclinante : la fonction s'exécutera plusieurs fois, réinitialisant la boucle à chaque fois.
Pour que le code fonctionne correctement, la fonction ne doit être exécutée qu'une seule fois lorsque l'utilisateur touche la plate-forme pour la première fois.Garantir qu'une action ne se déclenche qu'une seule fois lorsqu'elle serait autrement déclenchée plusieurs fois est appelé débounce .
Pour déboucher une fonction, une variable booléenne peut être utilisée pour suivre quand la plate-forme a déjà été touchée.Les booléens ne peuvent contenir que vrai et faux valeurs.Créer une variable appelée isTouched et la définir 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 déclaration if peut être utilisée pour exécuter uniquement le code dans la fonction d'atténuation si la variable de rebond isTouched est fausse.Enveloppez le corps de la fonction de disparition dans 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 Luau not inversera la valeur de tout ce qui le suit.En conditionsconditionnels, cela signifie que la première déclaration if se comporte de la même manière que les déclarations qui s'abonner.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Activer le débounce
Actuellement, le code dans la fonction fade s'exécutera toujours car isTouched est faux et not isTouched se évalue à vrai.Pour terminer la routine de débounce, vous devrez basculer la valeur de la variable à deux endroits.
- Définissez isTouched à true à l'intérieur de la déclaration if, avant que la plate-forme ne commence à disparaître.
- Remettez-le à false une fois que la plate-forme est réapparue.
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 trouver que la plate-forme disparaît lorsque l'utilisateur y saute et revient quelques secondes plus tard.
Vous pouvez dupliquer cette plate-forme à travers un écart plus large pour créer un obstacle difficile et modifier la vitesse à laquelle ils disparaissent pour équilibrer la difficulté.
Codes code
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)