Schleifenübung - erstelle eine zeitgesteuerte Brücke

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Dieses Projekt ist ein weiteres Beispiel für die Verwendung von Schleifen auf praktische Weise.Für diese Brücke werden Spieler einen Knopf berühren, um eine Brücke für eine begrenzte Zeit begehbar zu machen, bevor sie verschwindet.Um einen Timer zu erstellen und die verbleibende Zeit einem Spieler:inanzuzeigen, verwendest du Schleifen.

Einrichten des Projekts

Diese Brücke kann in jedem Spielprojekt mit bewegungsbezogenen Herausforderungen enthalten sein, wie einem Obby.

Teile erstellen

  1. Finde einen Ort, um eine Brücke zu bauen, wie einen Fluss oder eine große Lücke in einem Obby. Erstelle drei verankerte Teile wie unten.

    • Timeranzeige
    • Brücke
    • Knopfbrücke
  2. Wenn inaktiv, wird die Brücke halbtransparent sein. Dazu wählen Sie die Brücke aus und ändern ihre Eigenschaften.

    • Transparenz = 0,8
    • Kann kollidieren = False

Erstelle das Timer-Display

Wenn die Brücke überquert wird, müssen die Spieler sehen, wie viele Sekunden übrig sind, bevor die Brücke verschwindet.Eine Möglichkeit, Bilder oder Text anzuzeigen, besteht darin, ein Objekt namens Surface-GUI zu einem Teil hinzuzufügen. Oberflächen-GUIs können auch verwendet werden, um In-Game-Schilder, benutzerdefinierte Gesundheitsbalken und Inventarsysteme zu erstellen.Dieses Tutorial wird dies schnell durchgehen, aber weitere Informationen finden Sie im Abschnitt Tutorials.

  1. Wählen Sie TimerDisplay und fügen Sie ein SurfaceGui hinzu. Dann, verbunden mit dem Surface Gui, fügen Sie ein TextLabel hinzu.

  2. Wählen Sie die grafische Benutzeroberflächeaus. In den Eigenschaften machen Sie die folgenden Änderungen:

    • Ändere das Gesicht , damit du das Text-Label auf der Vorderseite des Temporizers sehen kannst, wo der Spieler sucht.
  3. Wählen Sie das TextLabel aus. In den Eigenschaften machen Sie die folgenden Änderungen:

    • Setze Größe auf .
    • Setze TextSkaliert auf wahr.
    • Setze Text auf leer. Der Text wird mit dem Skript, das. PL: die Skriptsaktualisiert.

Konfiguriere das Skript, das. PL: die Skripts

Jetzt, da der Timer vorhanden ist, erstelle ein Skript, um die Brücke zu steuern und die Countdown-Nummer den Spielern anzuzeigen.

  1. Füge im Bridge-Teil ein neues Skript namens TimedBridge hinzu. In diesem Skript, das. PL: die Skriptserstelle die folgenden Variablen.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- Wie lange die Brücke solide bleibt
    local timerDuration = 5

Kodiere die Touch-Interaktion

Um die Brücke zu verwenden, musst du zwei Funktionen erstellen.Eine Funktion wird die Brücke begehbar machen und den Timer anzeigen.Die andere Funktion wird aufhören zuzuhören, wenn ein Spieler die Taste drückt, die die Brücke aktiviert.

  1. Erstelle eine neue Funktion namens startTimer() mit einer Druckausdruck innerhalb. Du wirst die Druckausdruck verwenden, um deinen Codeszu testen.


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. Code eine Funktion namens buttonPressed(), um zu überprüfen, ob ein Humanoid die Taste berührt.Die Funktion sollte einen Parameter von partTouched akzeptieren und dann eine leere if-Anweisung haben, wenn ein Humanoid in diesem Teil erkannt wird.


    local function startTimer()
    print("Countdown started")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. Um den Timer zu starten, rufe in der if Aussage die Funktion startTimer() auf.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. Unter dem Ende von buttonPressed() verbinden Sie die buttonPressed() Funktion mit dem Touched Ereignis des Buttons.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. Führen Sie das Projekt aus. Berühren Sie das Teil und überprüfen Sie im Ausgabe-Fenster, um die Druckausgabe zu sehen.

Problemlösungstipps

An diesem Punkt, wenn die Brücke nicht wie beabsichtigt funktioniert, versuchen Sie eine der folgenden Optionen. Problem : Fehlermeldung, die sagt: "... is not a valid member of workspace" .

  • Im Skript, das. PL: die Skriptsüberprüfen Sie, dass alle Teile genau so geschrieben sind, wie sie im Explorer angezeigt werden. Problem : Kann die Teile nicht sehen.

  • Stellen Sie sicher, dass alle drei Teile verankert sind.

  • Überprüfe die Transparenz-Eigenschaft für die Brücke.

Erstelle den Timer

Jedes Mal, wenn Spieler auf die Brücke treten, macht startTimer() die Brücke begehbar und startet den Timer.Sobald der Timer auf 0 erreicht, wird die Brücke nicht mehr begehbar, wodurch jeder, der nicht schnell genug ist, Fallen.

Mache die Brücke begehbar

Um zu beginnen, muss das Skript die Brücke stabil oder kollidierbar machen und dann einen Timer starten, bis es ungehenkbar wird.

  1. Um die Brücke begehbar zu machen, ändern Sie in startTimer() die Transparenz-Eigenschaft der Brücke auf 0 (opak) und die CanCollide-Eigenschaft auf wahr.


    local function startTimer()
    -- Mache die Brücke sichtbar und begehbar
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Um einen Timer zu erstellen, der herunterzählt, erstelle eine for-Schleife mit den folgenden Werten.

    • Steuervariable : benannt count , gesetzt auf timerDuration .
    • Ende : 0
    • Zunahme : -1

    local function startTimer()
    -- Mache die Brücke sichtbar und begehbar
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Um den Timer den Spielern anzuzeigen, ändere den Text in timerText , um die Anzahl anzuzeigen, indem du timerText.Text = count eingibst.Jedes Mal, wenn die for-Schleife durch eine Iteration geht, wird sie den Spielern die nächste Zahl im Timer anzeigen.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. Verwende eine task.wait-Funktion, um die for-Schleife nur einmal pro Sekunde auszuführen.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Führe das Spiel aus. Wenn du die Taste berührst, sollte die Brücke erscheinen und der Timer starten, dann abgeschlossen wird.

Halte die Brücke von Neustarts ab

Beachten Sie jedoch, wenn Sie sich auf der Schaltfläche bewegen, wird der Timer immer wieder neu gestartet.

Das liegt daran, dass die for-Schleife jedes Mal aufgerufen wird, wenn du die Schaltfläche berührst und die for-Schleife von Anfang an startest.Um zu verhindern, dass der Timer ständig neu gestartet wird, musst du einen booleschen, eine Art Variable, hinzufügen, der überprüft, ob startTimer() erneut aufgerufen werden darf oder nicht. Booleen werden auf die gleiche Weise geschrieben wie andere Variablen, aber anstatt Zahlen oder Zeichen zu verwenden, können sie nur auf wahr oder falsch gesetzt werden.In dieser Situation wird das Skript einen booleschen verwenden, um zu überprüfen, ob der Timer derzeit läuft, bevor er gestartet wird.

  1. Ganz oben in deinem Skript, das. PL: die Skripts, unter deinen Variablen, erstelle eine Variable mit dem Namen timerActive und lege sie auf false fest, da niemand die Schaltfläche noch gedrückt hat.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. Um sicherzustellen, dass der Timer nur startet, wenn der timerActive boolesche Wert falsch ist, füge eine zweite Bedingung zur if-Anweisung in buttonPressed() hinzu.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. Um zu verhindern, dass startTimer() vor Ablauf der Zeit wieder ausgeführt wird, stellen Sie den booleschen timerActive auf wahr ein.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. In der startTimer()-Funktion, nach der for-Schleife, setze die Brücke auf ihre ursprünglichen Eigenschaften zurück, indem du die Transparenz der Brücke auf 0.8 änderst und CanCollide auf false.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- Für Schleife, die von der Timerdauer herunterzählt
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Mache die Brücke nicht begehbar
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. Die letzte Sache, um die Brücke zurückzusetzen, besteht darin, die timerText zu einem leeren String zu ändern, wie es ursprünglich war.Dann setze den timerActive booleschen Wert auf false.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Teste und überprüfe, ob die Brücke mehrfach verwendet werden kann.

Komplette zeitgesteuerte Skript, das. PL: die Skripts


local bridge = script.Parent
-- Holen Sie sich die Schaltfläche, wie sie im Explorer eingegeben wird
local button = workspace.ButtonBridge
-- Holt das Teil für die Anzeige
local timerPart = workspace.TimerDisplay
-- Holen Sie sich den Text, der den Timer anzeigen wird
local timerText = timerPart.SurfaceGui.TextLabel
-- Wie lange Spieler die Brücke überqueren müssen
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- Für Schleife, die von der Timerdauer herunterzählt
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Mache die Brücke nicht begehbar
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 touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)

Übersicht

Schleifen können mit verschiedenen Interaktionsmitteln kombiniert werden, um lustige Spielmomenten zu schaffen.In diesem Tutorial wird eine zeitgesteuerte Brücke mit einer for-Schleife erstellt, die als Countdown fungiert.Während des Countdowns erhalten Spieler eine begrenzte Zeit, um sich durchzusetzen.