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
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
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.
Wählen Sie TimerDisplay und fügen Sie ein SurfaceGui hinzu. Dann, verbunden mit dem Surface Gui, fügen Sie ein TextLabel hinzu.
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.
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.
Füge im Bridge-Teil ein neues Skript namens TimedBridge hinzu. In diesem Skript, das. PL: die Skriptserstelle die folgenden Variablen.
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Wie lange die Brücke solide bleibtlocal 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.
Erstelle eine neue Funktion namens startTimer() mit einer Druckausdruck innerhalb. Du wirst die Druckausdruck verwenden, um deinen Codeszu testen.
local timerDuration = 5local function startTimer()print("Countdown started")endCode 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")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendUm den Timer zu starten, rufe in der if Aussage die Funktion startTimer() auf.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendUnter dem Ende von buttonPressed() verbinden Sie die buttonPressed() Funktion mit dem Touched Ereignis des Buttons.
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)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.
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 begehbarbridge.Transparency = 0bridge.CanCollide = trueendUm 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 begehbarbridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendUm 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 dotimerText.Text = countendVerwende eine task.wait-Funktion, um die for-Schleife nur einmal pro Sekunde auszuführen.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endFü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.
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 = 5local timerActive = falselocal function startTimer()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.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendUm zu verhindern, dass startTimer() vor Ablauf der Zeit wieder ausgeführt wird, stellen Sie den booleschen timerActive auf wahr ein.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueIn 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 = truebridge.Transparency = 0bridge.CanCollide = true-- Für Schleife, die von der Timerdauer herunterzähltfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Mache die Brücke nicht begehbarbridge.Transparency = 0.8bridge.CanCollide = falseendDie 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.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseTeste 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.