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
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
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.
Wählen Sie TimerDisplay und fügen Sie ein SurfaceGui hinzu. Dann, mit dem Surface Gui in Beziehung, fügen Sie einen TextLabel hinzu.
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.
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.
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.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- Wie lange die Brücke stabil bleiben wirdlocal 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.
Erstellen Sie eine neue Funktion namens startTimer() mit einem Print-Ausdruck innerhalb. Sie verwenden den Print-Ausdruck, um Ihren Codeszu testen.
local timerDuration = 5local function startTimer()print("Countdown started")endCode 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")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendendUm den Timer zu starten, in der if-Anweisung, rufen Sie 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 Funktion buttonPressed() mit dem Ereignis Touched der Schaltfläche.
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 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.
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 = 0bridge.CanCollide = trueendUm 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 = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendendUm 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 dotimerText.Text = countendVerwenden Sie die Funktion task.wait, um den For-Loop nur einmal pro Sekunde auszuführen.
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)endLaufen 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.
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 = 5local timerActive = falselocal function startTimer()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.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endendUm startTimer() vor dem Ablauf des Timers erneut auszuführen, setzen Sie dieBoolean timerActive auf true.
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = trueIn 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 = truebridge.Transparency = 0bridge.CanCollide = true-- Für Loop, der von timerDuration abzähltfor count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- Lass die Brücke nicht gehenbridge.Transparency = 0.8bridge.CanCollide = falseendEine 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.8bridge.CanCollide = falsetimerText.Text = ""timerActive = falseTeste 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.