Pratique des boucles - créer un pont chronométré

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

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

  1. 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
  2. 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.

  1. Sélectionnez DisplayTemporisateur et ajoutez un SurfaceGui. Ensuite, en tant qu'enfant du Surface Gui, ajoutez un TextLabel.

  2. 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.
  3. 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.

  1. Dans la partie Pont, ajoutez un nouveau script nommé TimedBridge. Dans ce script, créez les variables suivantes.


    local bridge = script.Parent
    local button = workspace.BoutonPont
    local timerText = workspace.DisplayTemporisateur.SurfaceGui.TextLabel
    -- Combien de temps le pont restera solide
    local 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.

  1. 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 = 5
    local function startTimer()
    print("Compte à rebours commencé")
    end
  2. Programmez 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é")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. Pour démarrer le chronomètre, dans l'instruction if, appelez la fonction startTimer().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. À la fin de buttonPressed(), connectez la fonction buttonPressed() à l'événement Touched du bouton.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. 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.

  1. 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 praticable
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Pour 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 praticable
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Pour 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 do
    timerText.Text = count
    end
  4. Utilisez une fonction task.wait pour faire en sorte que la boucle for s'exécute une fois par seconde.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Exé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.

  1. 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 = 5
    local timerActive = false
    local function startTimer()
  2. 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.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Pour 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 = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. Dans 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 = 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
    end
  5. Une 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.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Testez 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.

©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.