Fausse éclair

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

Dans Deadly Lava, vous avez appris à déclencher du code en fonction du comportement de l'utilisateur. Ce tutoriel vous montre comment faire une plate-forme qui disparaît lorsqu'un utilisateur marche dessus.

Mise en place

Si vous avez suivi Deadly Lava, vous pouvez placer votre plate-forme dégradée au-dessus du sol de lave que les utilisateurs ne peuvent pas sauter à travers.

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

  2. Redimensionnez-le pour qu'un utilisateur puisse y sauter.

  3. Assurez-vous que c'est Anchored .

  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 plate-forme 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)

Fading la plate-forme

Avoir la plate-forme disparaître en un instant ne serait pas amusant du tout car les utilisateurs trouveraient impossible de franchir le fossé. À la place, la plate-forme devrait disparaître avant que les utilisateurs tombent à travers pour leur donner une chance de off.

Vous pourriez changer la propriété Transparency et attendre très longtemps sur et encore une fois pour obtenir cet effet, mais un effet degradé progressif nécessiterait au moins 10 changements entre 0 et 1. C'est 20 lignes de code très répétitif.

Ceci peut être obtenu beaucoup plus efficacement en utilisant un pour boucle qui répète le code un certain nombre de fois. Chaque boucle du code est connue comme un itération . Un pour boucle est défini 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, il s'agit de count et la valeur de départ est 1.
  • Fin de la valeur - La valeur qu'il doit obtenir pour que le boucle s'arrête. Dans cet exemple, il s'agit de 10.
  • Incrément de passe (facultatif) - Détermine ce à ajouter à la variable de contrôle à chaque boucle. Si la valeur est vide, elle est ignorée. Dans cet exemple, il s'agit donc de l'incontraire.

Dans FadeOnTouch :

  1. Dans la fonction, créez un for boucle commençant à partir de 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. Appeler 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 nombre de augmentera de 1 avec chaque itération. Cela signifie que la plateformeTransparency augmentera de 0,1 chaque 0,1 secondes, atteignant la pleine transparence après 1 seconde.

Réapparition

Après la disparition de la plate-forme, les utilisateurs devraient tomber à travers. La plate-forme devrait également revenir dans quelques secondes après sa disparition - sinon, les utilisateurs ne pourraient jamais essayer de sauter à nouveau s'ils échouent. La propriété CanCollide gère si les utilisateurs peuvent tomber à travers une partie.

  1. Définissez la propriété CanCollide de la plate-forme sur false après la boucle de for.

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

  3. Réinitialisez la propriété CanCollide à true.

  4. Réinitialisez la propriété Transparency à 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)

Débounce variante

Dans Lave mortelle, vous avez appris que l'événement Touched fonctionne chaque fois qu'une partie du corps d'un utilisateur entre en contact avec la partie. Ce comportement cause des problèmes lorsqu'un utilisateur s'exécute sur la plateformeféminine : la fonction s'exécute plusieurs fois, réinitialisant le 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 plate-forme pour la première fois. En garantissant que chaque action ne sera exécutée qu'une seule fois lorsqu'elle serait autrement exécutée plusieurs fois, on connaît comme débounce .

Pour annuler une fonction, une variable Boolean peut être utilisée pour suivre quand la plate-forme a déjà été touchée. Les booleans ne peuvent contenir que vrai et faux valeurs. Créez une variable nommée 2> isTouched2> et définissez-la sur 5> false5>.


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érification de la variable

Une if statement peut être utilisée pour exécuter le code dans la fonction d'évitement seulement si la variable de débouncement isTouched est fausse. Wrap the body of the fade function in an if statement with the 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 Lua not inverse la valeur de tout ce qui le suit. Dans les conditions conditionnelles, cela signifie que la première if statement se comporte de la même façon que les déclarations qui s'abonner.


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

Activer le débounce

Actuellement, le code dans la fonction fade exécute toujours parce que isTouched est faux et not isTouched évalue à vrai. Pour terminer la routine de débounce, vous devrez activer la valeur de la variable dans deux endroits.

  1. Définir isTouched à true à l'intérieur de la déclaration if, avant que la plate-forme commence à s'effacer.
  2. Réinitialisez-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 voilà! Testez votre code maintenant, et vous devriez trouver que la plate-forme s'estompe lorsque l'utilisateur s'y jette et revient quelques secondes plus tard.

Vous pouvez dupliquer cette plate-forme sur un plus grand espacement pour créer un obstacle difficile et modifier la vitesse à laquelle ils 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)