Loop-Übung - Erstellung einer zeitlichen 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 dafür, wie man für Loop in praktischer Weise verwendet. Für diese Brücke werden Spieler einen Knopf berühren, um eine Brücke für eine begrenzte Zeit zu machen, bevor sie verschwindet. Um einen Timer zu erstellen und dem Spieler:indie verbleibende Zeit anzuzeigen, werden Sie für Loop verwenden.

Das Projekt einrichten

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

Teile erstellen

  1. Finden Sie einen Ort, an dem Sie eine Brücke bauen können, wie einen Fluss oder eine große Lücke in einem Obby. Erstellen Sie drei verankerte Teile wie unten.

    • TimerAnzeige
    • Brücke
    • ButtonBridge
  2. Wenn inaktiv, wird die Brücke halbtransparent sein. Um dies zu tun, wählen Sie die Brücke und ändern Sie seine Eigenschaften.

    • Transparenz = 0.8
    • Kann kollidieren = Falsch

Erstellen des Timer-Displays

Wenn Sie die Brücke überqueren, müssen die Spieler sehen, wie viele Sekunden es noch vor dem Verschwinden der Brücke übrig sind. Ein Weg, Bilder oder Text anzuzeigen, ist, ein Objekt namens eine OberflächenGUI zu einem Teil hinzuzufügen. OberflächenGUI können auch verwendet werden, um In-Game-Schilder, benutzerdefinierte Gesundheitsleisten und Inventarsysteme zu erstellen.

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

  2. Wählen Sie die grafische Benutzeroberfläche. In den Eigenschaften führen Sie die folgenden Änderungen vor:

    • Ändern Sie das Gesicht , damit Sie die Text-Etikett auf der Vorderseite des Timers sehen können, auf der der Spieler sucht.
  3. Wählen Sie die TextLabel. In den Eigenschaften machen Sie die folgenden Änderungen:

    • Set Größe auf {1, 0},{1, 0} .
    • Set TextScaled auf true.
    • Set Text leer. Text wird mit dem Skript, das. PL: die Skriptsaktualisiert.

Script einrichten

Jetzt, da der Timer in Ortist, erstellen Sie ein Skript, um die Brücke zu steuern und die Countdown-Anzeige für Spieler anzuzeigen.

  1. In der Bridge-Teil fügen Sie ein neues Skript hinzu, das TimedBridge heißt. In diesem Skript, das. PL: die Skriptserstellen Sie die folgenden Variablen.


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

Touch-Interaktion codieren

Um die Brücke zu verwenden, musst du zwei Funktionen erstellen. Eine Funktion wird die Brücke walkable machen und den Timer anzeigen. Die andere Funktion wird aufhören, wenn ein Spieler die Schaltfläche berührt, die die Brücke aktiviert.

  1. Erstellen Sie eine neue Funktion namens startTimer() mit einem Print-Ausdruck innerhalb. Sie verwenden den Print-Ausdruck, um Ihren 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 Schaltfläche berührt. Die Funktion sollte ein Parameter von partTouched annehmen und dann eine leere if-Anweisung haben, wenn ein Humanoid in diesem Teil entdeckt 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, in der if-Anweisung, rufen Sie 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 Funktion buttonPressed() mit dem Ereignis Touched der Schaltfläche.


    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 die Druckanzeige.

Troubleshooting-Tipps

Wenn die Brücke nicht wie erwartet funktioniert, versuche es mit einem der folgenden Optionen. Problem : Fehler-Nachricht, 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 : Ich kann die Teile nicht sehen.

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

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

Erstellen des Temporisers

Wenn Spieler die Brücke betreten, macht startTimer() die Brücke walkbar und startet den Timer. Sobald der Timer 0 erreicht, wird die Brücke un走bar, wodurch jeder, der nicht schnell genug ist, um zu Fallen.

Die Brücke walkbar machen

Zuerst muss das Skript die Brücke stabil machen oder kollisionssicher machen und dann einen Timer starten, bis sie ungehenbar wird.

  1. Um die Brücke zu übergehen, in startTimer() , ändern Sie die Transparenz-Eigenschaft der Brücke auf 0 (opake) und die CanCollide-Eigenschaft auf true.


    local function startTimer()
    -- Machen Sie die Brücke sichtbar und gehen Sie zu Fuß
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. Um einen Timer, der Countdowns zählt, zu erstellen, erstellen Sie eine for Loop mit den folgenden Werten.

    • Variable Steuerung : mit dem Namen count und auf timerDuration eingestellt.
    • Ende : 0
    • Increment : -1

    local function startTimer()
    -- Machen Sie die Brücke sichtbar und gehen Sie zu Fuß
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. Um den Timer für Spieler anzuzeigen, ändern Sie den Text in timerText , um die Anzeige der Anzahl durch das Eintippen von timerText.Text = count zu zeigen. Jedes Mal, wenn der For-Loop durch eine Iteration geht, wird der Spieler die nächste Zahl im Timer anzeigen.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. Verwenden Sie die Funktion task.wait, um den For-Loop nur einmal pro Sekunde auszuführen.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. Laufen Sie das Spiel. Wenn Sie die Schaltfläche berühren, sollte die Brücke erscheinen und der Timer starten, dann abgeschlossen.

Brücke vom Neustart fernhalten

Beachten Sie jedoch, wenn Sie mit der Schaltfläche umhergehen, wird der Timer immer noch neu gestartet.

Dies ist, da der for-Loop jedes Mal ausgeführt wird, wenn Sie die Schaltfläche berühren und den for-Loop vom Anfang an starten. Um den Timer nicht ständig neu zu starten, müssen Sie einenBoolean hinzufügen, eine Art Variable, die steuern wird, ob oder nicht startTimer() erneut ausgeführt werden darf. Booleans 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 verwendet das Skript einenBoolean, um zu überprüfen, ob der Timer derzeit ausgeführt wird, bevor es ihn startet.

  1. Erstellen Sie oben Ihres Skript, das. PL: die Skripts, unter Ihren Variablen, eine Variable namens timerActive und setzen Sie sie auf false, 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 dann startet, wenn die timerActive -Boolean falsch ist, füge einen zweiten Bedingung zu der 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 startTimer() vor dem Ablauf des Timers erneut auszuführen, setzen Sie dieBoolean timerActive auf true.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. In der startTimer() Funktion, nach dem For-Loop, setzen Sie die Brücke zurück zu ihren ursprünglichen Eigenschaften, indem Sie die Transparenz der Brücke auf 0.8 und CanCollide auf false ändern.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- Für Loop, der von timerDuration abzählt
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- Lass die Brücke nicht gehen
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. Eine letzte Sache, die die Brücke zurücksetzt, ist, den timerText in eine leere Zeichenfolge zu ändern, wie es ursprünglich war. Dann setze den timerActive -Boolean auf false.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. Teste den Spieltest und stelle sicher, dass die Brücke mehrmals verwendet werden kann.

Schließe das zeitlich begrenzte Bridge-Skript ab


local bridge = script.Parent
-- Bekommt die Schaltfläche, wie sie im Explorer eingegeben wird
local button = workspace.ButtonBridge
-- Bekommt das Teil für die Anzeige
local timerPart = workspace.TimerDisplay
-- Bekommt den Text, der den Timer anzeigt
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 Loop, der von timerDuration abzählt
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- Lass die Brücke nicht gehen
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)

Zusammenfassung

Looping kann mit verschiedenen Interaktionsmitteln kombiniert werden, um lustige Spiel Momente zu erstellen. In diesem Tutorial wird eine zeitbare Brücke mit einem Countdown erstellt. Während des Countdowns geben Spieler eine begrenzte Zeit, um überzusenden.