In Tödlicher Lava hast du gelernt, wie du Code basierend auf dem Verhalten des Benutzers auslösen kannst.Dieses Tutorial zeigt Ihnen, wie Sie eine Plattform erstellen, die verschwindet, wenn ein Benutzer darauf tritt.
Einrichten
Wenn du Tödliche Lava befolgt hast, kannst du deine verschwindende Plattform über dem Lavaboden platzieren, den Benutzer nicht überqueren können.
Füge ein Teil ein und stelle es in deiner Welt ein. Benenne es FadingPlatform.
Größe ändern, damit ein Benutzer darauf springen kann.
Stellen Sie sicher, dass es verankert ist.
Füge ein Skript in das Teil ein, umbenenne es in FadeOnTouch um und entferne den Codes.
Erstelle eine Variable für die Plattform und eine leere Funktion, die mit dem Ereignis der Plattform Touched
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Verbleicht die Plattform
Die Plattform verschwinden zu lassen, in einem Augenblick, wäre überhaupt kein Spaß, da Benutzer es unmöglich finden würden, die Lücke zu überbrücken.Stattdessen sollte die Plattform verschwinden bevor Benutzer durch sie fallen, um ihnen die Chance zu geben, aus.
Du könntest die Eigenschaft Transparency ändern und warten eine sehr kurze Zeit immer wieder, um diesen Effekt zu erhalten, aber ein graduelles Verschwinden würde mindestens 10 Änderungen zwischen 0 und 1 erfordern.Das sind 20 Zeilen sehr wiederholenden Codes.
Dies kann effektiver erreicht werden, indem ein für Schleife verwendet wird, die Code eine bestimmte Anzahl von Mal wiederholt.Jede Schleife des Codes ist als Iteration bekannt.A für Schleife wird mit drei Dingen definiert, getrennt durch Kommas:
- Steuervariable - Die Variable, die erstellt und verwendet wird, um die Schleifen zu zählen. In diesem Beispiel ist es count und der Startwert ist 1.
- Endwert - Der Wert, den es erreichen muss, damit die Schleife aufhört. In diesem Beispiel ist es 10.
- Schrittserhöhung (optional) - Bestimmt, was zu jeder Schleife zur Kontrollvariable hinzuzufügen ist.Wenn es ausgelassen wird, wird es standardmäßig auf 1 gesetzt, sodass es in diesem Beispiel unnötig ist.
In FadeOnTouch :
Erstelle in der Funktion eine for Schleife, die von 1 beginnt und sich wiederholt 10 Mal.
Innerhalb der for-Schleife setze die Transparency Eigenschaft auf die Steuervariable geteilt durch 10.
Rufe die task.wait() Funktion mit einer Zeit von 0.1 auf.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endendplatform.Touched:Connect(fade)
Wenn die Schleife ausgeführt wird, erhöht sich die Zahl mit jeder Iteration um 1.Das bedeutet, dass die Plattform von Transparency jede 0,1 Sekunde um 0,1 erhöht wird, erreicht volle Transparenz nach 1 Sekunde.
Wiederauftauchen
Nachdem die Plattform verschwunden ist, sollten Benutzer durch sie fallen.Die Plattform sollte auch ein paar Sekunden nach dem Verschwinden zurückkommen - sonst würden Benutzer nie wieder versuchen, zu springen, wenn sie scheitern.Die Eigenschaft CanCollide steuert, ob Benutzer durch ein Teil fallen können.
Setze die CanCollide Eigenschaft der Plattform auf false nach der for-Schleife.
Warte einige Sekunden mit der task.wait()-Funktion.
Setze die CanCollide Eigenschaft auf true zurück.
Setze die Transparency Eigenschaft auf 0 zurück.
local platform = script.Parentlocal function fade()for count = 1, 10 doplatform.Transparency = count / 10task.wait(0.1)endplatform.CanCollide = falsetask.wait(3)platform.CanCollide = trueplatform.Transparency = 0endplatform.Touched:Connect(fade)
Abwurfvariable Debounce
In Tödlicher Lava hast du gelernt, dass das Ereignis Touched jedes Mal ausgeführt wird, wenn ein Körperteil eines Benutzers mit dem Teil in Kontakt kommt.Dieses Verhalten verursacht Probleme, wenn ein Benutzer über die verbleibende Plattform läuft: Die Funktion wird mehrmals ausgeführt und jedes Mal wird der Loop zurückgesetzt.
Damit der Code richtig funktioniert, sollte die Funktion nur einmal ausgeführt werden, wenn der Benutzer die Plattform zum ersten Mal berührt.Die Gewährleistung, dass eine Aktion nur einmal ausgelöst wird, wenn sie sonst mehrmals ausgelöst wird, ist als Debounce bekannt.
Um eine Funktion zu debouncen, kann eine boolesche Variable verwendet werden, um zu verfolgen, wann die Plattform bereits berührt wurde.Booleen können nur Werte wahr und falsch enthalten.Erstelle eine Variable mit dem Namen isTouched und lege sie auf false fest.
local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)
Überprüfe die Variable
Eine if-Anweisung kann verwendet werden, um nur den Code in der Fade-Funktion auszuführen, wenn die isTouched Debounce-Variable falsch ist.Wrap the body of the fade function in an if statement with the condition not isTouched .
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)
Der Luau-Operator not umkehrt den Wert von allem, was ihm folgt.In bedingten Bedingungenbedeutet dies, dass die erste if-Anweisung sich wie die folgenden Anweisungen verhält.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Schalte die Debounce um
Derzeit wird der Code in der fade Funktion immer ausgeführt, weil isTouched falsch ist und not isTouched zu wahr bewertet wird.Um die Debounce-Routine abzuschließen, musst du den Wert der Variable an zwei Stellen umschalten.
- Setze innerhalb der Aussage, bevor die Plattform beginnt zu verschwinden.
- Setze es zurück auf false, sobald die Plattform wieder aufgetaucht ist.
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)
Und das ist es! Teste deinen Code jetzt und du solltest feststellen, dass die Plattform verschwindet, wenn der Benutzer darauf springt und ein paar Sekunden später zurückkehrt.
Du kannst diese Plattform über eine breitere Lücke duplizieren, um ein herausforderndes Hindernis zu schaffen und die Geschwindigkeit zu ändern, mit der es verschwindet, um die Schwierigkeit auszubalancieren.
Letzter Codes
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)