In Deadly Lava hast du gelernt, wie man Code basierend auf dem Verhalten der Benutzer auslöst. Dieses Tutorial zeigt dir, wie du eine Plattform erstellen kannst, die verschwindet, wenn ein Benutzer darauf tritt.
Einrichten
Wenn du Deadly Lava gefolgt bist, kannst du deine verschwindende Plattform über den Lava-Boden platzieren, über den Benutzer nicht springen können.
Füge ein Teil ein und bewege es an die richtige Stelle in deiner Welt. Nenne es FadingPlatform.
Ändere die Größe, damit ein Benutzer darauf springen kann.
Stelle sicher, dass es Anchored ist.

Füge ein Script in das Teil ein, benenne es in FadeOnTouch um und entferne den Standardcode.

Erstelle eine Variable für die Plattform und eine leere Funktion, die mit dem Touched-Ereignis der Plattform verbunden ist.
local platform = script.Parentlocal function fade()endplatform.Touched:Connect(fade)
Plattform verblassen
Wenn die Plattform sofort verschwinden würde, wäre das überhaupt nicht lustig, da die Benutzer es unmöglich finden würden, die Lücke zu überqueren. Stattdessen sollte die Plattform verblassen, bevor die Benutzer hindurchfallen, um ihnen die Möglichkeit zu geben, abzuspringen.
Du könntest die Transparency-Eigenschaft ändern und eine sehr kurze Zeit immer wieder warten, um diesen Effekt zu erzielen, aber ein allmähliches Verblassen würde mindestens 10 Änderungen zwischen 0 und 1 erfordern. Das sind 20 Zeilen sehr repetitiven Codes.
Dies kann viel effektiver mit einer for-Schleife erreicht werden, die den Code eine bestimmte Anzahl von Malen wiederholt. Jede Schleife des Codes wird als Iteration bezeichnet. Eine for-Schleife wird mit drei Dingen definiert, die durch Kommas getrennt sind:

- Steuerungsvariable - 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 stoppt. In diesem Beispiel ist es 10.
- SchrittinkrementOPTIONAL- Bestimmt, was zur Steuerungsvariable bei jeder Schleife hinzugefügt wird. Wenn es weggelassen wird, wird es standardmäßig auf 1 gesetzt, sodass es in diesem Beispiel nicht notwendig ist.
In FadeOnTouch:
Erstelle in der Funktion eine for-Schleife, die bei 1 beginnt und 10 Mal iteriert.
Setze innerhalb der for-Schleife die Transparency-Eigenschaft auf die Steuerungsvariable geteilt durch 10.
Rufe die Funktion task.wait() 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 läuft, erhöht sich der Zähler bei jeder Iteration um 1. Das bedeutet, dass die Transparency der Plattform alle 0,1 Sekunden um 0,1 erhöht wird und nach 1 Sekunde die volle Transparenz erreicht.
Wiedererscheinen
Nachdem die Plattform verschwunden ist, sollten die Benutzer hindurchfallen. Die Plattform sollte auch ein paar Sekunden nach dem Verblassen zurückkommen - andernfalls hätten die Benutzer nie die Möglichkeit, den Sprung erneut zu versuchen, wenn sie gescheitert sind. Die CanCollide-Eigenschaft steuert, ob Benutzer durch ein Teil fallen können.
Setze die CanCollide-Eigenschaft der Plattform auf false nach der for-Schleife.
Warte ein paar Sekunden mit der Funktion task.wait().
Setze die CanCollide-Eigenschaft wieder auf true.
Setze die Transparency-Eigenschaft wieder auf 0.
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)
Debounce-Variable
In Deadly Lava hast du gelernt, dass das Touched-Ereignis 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 verschwindende Plattform läuft: Die Funktion wird mehrmals ausgeführt und setzt die Schleife jedes Mal zurück.
Damit der Code richtig funktioniert, sollte die Funktion nur einmal ausgeführt werden, wenn der Benutzer die Plattform zum ersten Mal berührt. Sicherzustellen, dass eine Aktion nur einmal ausgelöst wird, wenn sie sonst mehrfach ausgelöst werden würde, wird als Debouncing bezeichnet.
Um eine Funktion zu debouncen, kann eine boolean Variable verwendet werden, um zu verfolgen, wann die Plattform bereits berührt wurde. Booleans können nur die Werte true und false enthalten. Erstelle eine Variable namens isTouched und setze sie auf false.
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 den Code in der Fade-Funktion nur auszuführen, wenn die isTouched-Debounce-Variable false ist. Umhülle den Körper der Fade-Funktion mit einer if-Anweisung mit der Bedingung 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 not-Operator kehrt den Wert von dem um, was ihm folgt. In bedingten Begriffen bedeutet dies, dass die erste if-Anweisung sich genauso verhält wie die folgenden Anweisungen.
if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
endDebounce umschalten
Derzeit wird der Code in der fade-Funktion immer ausgeführt, da isTouched false ist und not isTouched true ergibt. Um die Debounce-Routine abzuschließen, musst du den Wert der Variable an zwei Stellen umschalten.
- Setze isTouched auf true innerhalb der if-Anweisung, bevor die Plattform zu verblassen beginnt.
- Setze es zurück auf false, sobald die Plattform wieder erschienen 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 war's! Teste jetzt deinen Code, und du solltest feststellen, dass die Plattform verschwindet, wenn der Benutzer darauf springt, und ein paar Sekunden später zurückkommt.
Du kannst diese Plattform über eine breitere Lücke duplizieren, um ein herausforderndes Hindernis zu schaffen, und die Geschwindigkeit, mit der sie verblassen, ändern, um die Schwierigkeit auszugleichen.
Endgültiger Code
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)