Ce projet est un autre exemple d'utilisation des boucles for de manière pratique. Pour ce pont, les joueurs toucheront un bouton pour rendre un pont praticable pendant un temps limité avant qu'il ne disparaisse. Pour créer un chronomètre et montrer le temps restant à un joueur, vous utiliserez des boucles for.
Configurer le projet
Ce pont peut être inclus dans n'importe quel projet Roblox avec des défis basés sur le mouvement, comme un obby.
Créer des parties
Trouvez un endroit pour construire un pont, comme une rivière ou un grand vide dans un obby. Créez trois parties ancrées comme ci-dessous.
- DisplayTemporisateur
- Pont
- BoutonPont

Lorsqu'il est inactif, le pont sera semi-transparent. Pour ce faire, sélectionnez le Pont et modifiez ses propriétés.
- Transparence = 0.8
- CanCollide = Faux
Créer l'affichage du chronomètre
Lorsqu'ils traversent le pont, les joueurs devront voir combien de secondes il reste avant que le pont ne disparaisse. Une manière d'afficher des images ou du texte est d'ajouter un objet appelé Surface GUI à une partie. Les Surface GUIs peuvent également être utilisées pour créer des panneaux en jeu, des barres de santé personnalisées et des systèmes d'inventaire. Ce didacticiel traitera cela rapidement, mais plus d'informations peuvent être trouvées dans la section Tutoriels.
Sélectionnez DisplayTemporisateur et ajoutez un SurfaceGui. Ensuite, en tant qu'enfant du Surface Gui, ajoutez un TextLabel.

Sélectionnez le Surface GUI. Dans les Propriétés, apportez les modifications suivantes :
- Changez la Face afin de pouvoir voir le label de texte sur le devant du chronomètre où le joueur regarde.
Sélectionnez le TextLabel. Dans les Propriétés, faites les modifications suivantes :
- Définissez Taille sur {1, 0},{1, 0}.
- Définissez TextScaled sur vrai.
- Définissez Text sur vide. Le texte sera mis à jour à l'aide du script.
Configurer le script
Maintenant que le chronomètre est en place, créez un script pour contrôler le pont et afficher le nombre de compte à rebours aux joueurs.
Dans la partie Pont, ajoutez un nouveau script nommé TimedBridge. Dans ce script, créez les variables suivantes.
local bridge = script.Parentlocal button = workspace.BoutonPontlocal timerText = workspace.DisplayTemporisateur.SurfaceGui.TextLabel-- Combien de temps le pont restera solidelocal timerDuration = 5
Programmer l'interaction tactile
Pour utiliser le pont, vous devrez créer deux fonctions. Une fonction rendra le pont praticable et affichera le chronomètre. L'autre fonction écoutera si un joueur touche le bouton qui active le pont.
Créez une nouvelle fonction nommée startTimer() avec une instruction print à l'intérieur. Vous utiliserez l'instruction print pour tester votre code.
local timerDuration = 5local function startTimer()print("Compte à rebours commencé")endProgrammez une fonction nommée buttonPressed() pour vérifier si un humanoïde touche le bouton. La fonction doit accepter un paramètre appelé partTouched, puis avoir une instruction if vide si un humanoïde est détecté dans cette partie.
local function startTimer()print("Compte à rebours commencé")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendPour démarrer le chronomètre, dans l'instruction if, appelez la fonction startTimer().
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendÀ la fin de buttonPressed(), connectez la fonction buttonPressed() à l'événement Touched du bouton.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)Exécutez le projet. Touchez la partie et vérifiez dans la fenêtre de sortie pour voir l'instruction print.
Conseils de dépannage
À ce stade, si le pont ne fonctionne pas comme prévu, essayez l'une des solutions suivantes.
Problème : Message d'erreur disant : "... n'est pas un membre valide de workspace".
- Dans le script TimedBridge, vérifiez que toutes les parties sont orthographiées exactement comme elles apparaissent dans l'Explorateur.
Problème : Impossible de voir les parties.
- Assurez-vous que les trois parties sont Ancrées.
- Vérifiez la propriété Transparence pour le pont.
Créer le chronomètre
Chaque fois que les joueurs marchent sur le pont, startTimer() rendra le pont praticable et démarrera le chronomètre. Une fois le chronomètre atteint à 0, le pont deviendra impraticable, causant la chute de quiconque n'est pas suffisamment rapide.
Rendre le pont praticable
Pour commencer, le script devra rendre le pont solide, c'est-à-dire collidable, puis démarrer un chronomètre jusqu'à ce qu'il devienne impraticable.
Pour rendre le pont praticable, dans startTimer(), changez la propriété Transparence du pont à 0 (opaque) et la propriété CanCollide à vrai.
local function startTimer()-- Rendre le pont visible et praticablebridge.Transparency = 0bridge.CanCollide = trueendPour créer un chronomètre qui compte à rebours, créez une boucle for avec les valeurs suivantes.
- Variable de Contrôle : nommée count, définie sur timerDuration.
- Fin : 0
- Incrément : -1
local function startTimer()-- Rendre le pont visible et praticablebridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendPour montrer le chronomètre aux joueurs, changez le texte dans timerText pour afficher count en tapant timerText.Text = count. Chaque fois que la boucle for passe par une itération, elle montrera aux joueurs le prochain nombre du chronomètre.
for count = timerDuration, 0, -1 dotimerText.Text = countendUtilisez une fonction task.wait pour faire en sorte que la boucle for s'exécute une fois par seconde.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endExécutez l'expérience. Lorsque vous touchez le bouton, le pont doit apparaître et le chronomètre démarrera, puis se terminera.
Empêcher le redémarrage du pont
Notez cependant que si vous bougez sur le bouton, le chronomètre redémarrera constamment.
C'est parce que la boucle for est appelée chaque fois que vous touchez le bouton et redémarre la boucle for depuis le début. Pour éviter que le chronomètre redémarre constamment, vous devrez ajouter un booléen, un type de variable, qui contrôlera si startTimer() peut être rappelée ou non.
Les booléens sont écrits de la même manière que d'autres variables, mais au lieu d'utiliser des nombres ou des chaînes, ils peuvent seulement être définis sur vrai ou faux. Dans cette situation, le script utilisera un booléen pour vérifier si le chronomètre est actuellement en cours d'exécution avant de le démarrer.
En haut de votre script, sous vos variables, créez une variable nommée timerActive et définissez-la sur false car personne n'a encore pressé le bouton.
local timerDuration = 5local timerActive = falselocal function startTimer()Pour s'assurer que le chronomètre ne démarre que lorsque le booléen timerActive est faux, ajoutez une seconde condition à l'instruction if dans buttonPressed().
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendPour empêcher startTimer() de s'exécuter à nouveau avant que le chronomètre ne s'écoule, définissez le booléen timerActive sur vrai.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueDans la fonction startTimer(), après la boucle for, réinitialisez les propriétés du pont en changeant la transparence du pont à 0.8 et CanCollide à faux.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- Boucle for qui compte à rebours depuis timerDurationfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Rendre le pont impraticablebridge.Transparency = 0.8bridge.CanCollide = falseendUne dernière chose pour réinitialiser le pont est de changer le timerText en une chaîne vide comme au début. Ensuite, définissez le booléen timerActive sur faux.
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseTestez le jeu et vérifiez que le pont peut être utilisé plusieurs fois.
Script complet du pont chronométré
local bridge = script.Parent
-- Récupère le bouton tel qu'il est écrit dans l'Explorateur
local button = workspace.BoutonPont
-- Récupère la partie pour l'affichage
local timerPart = workspace.DisplayTemporisateur
-- Récupère le texte qui affichera le chronomètre
local timerText = timerPart.SurfaceGui.TextLabel
-- Combien de temps les joueurs ont pour traverser le pont
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Compte à rebours commencé")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Boucle for qui compte à rebours depuis timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Rendre le pont impraticable
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("part touchée")
if humanoid and timerActive == false then
print("démarrage du chronomètre")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
Résumé
Les boucles peuvent être combinées avec différents moyens d'interaction pour créer des moments de jeu agréables. Dans ce didacticiel, un pont chronométré est créé à l'aide d'une boucle for qui fonctionne comme un compte à rebours. Pendant le compte à rebours, les joueurs ont un temps limité pour traverser.