In Deadly Lava hast du gelernt, wie du Code basierend auf dem Verhalten der Benutzer auslösen kannst. Dieses Tutorial zeigt dir, wie du eine Plattform erstellen kannst, die verblasst, wenn ein Benutzer darauf tritt.
Einrichten
Wenn du Deadly Lava gefolgt bist, kannst du deine ausblendende Plattform über dem Lavaboden platzieren, über den Benutzer nicht springen können.
Füge ein Teil hinzu und bewege es an die richtige Stelle in deiner Welt. Nenne es FadingPlatform.
Skaliere es so, dass ein Benutzer darauf springen kann.
Stelle sicher, dass es Angeschlossen ist.

Füge ein Skript 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 ausblenden
Wenn die Plattform sofort verschwinden würde, wäre das überhaupt nicht lustig, da die Benutzer es unmöglich fänden, die Lücke zu überqueren. Stattdessen sollte die Plattform ausblenden, bevor Benutzer hindurchfallen, um ihnen die Chance zu geben, abzuhüpfen.
Du könntest die Transparency-Eigenschaft ändern und sehr kurze Zeit wiederholt warten, um diesen Effekt zu erzielen, aber ein allmähliches Ausblenden 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 Code eine bestimmte Anzahl von Malen wiederholt. Jede Schleifeniteration 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 heißt sie count und der Startwert ist 1.
- Endwert - Der Wert, den sie erreichen muss, damit die Schleife stoppt. In diesem Beispiel ist es 10.
- Schritt-Inkrement (optional) - Bestimmt, was zur Steuerungsvariable in jeder Schleife hinzugefügt wird. Wenn es weggelassen 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 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 Wert von count mit jeder Iteration um 1. Das bedeutet, dass die Transparency der Plattform alle 0.1 Sekunden um 0.1 steigt und nach 1 Sekunde vollständig transparent wird.
Wieder erscheinen
Nachdem die Plattform verschwunden ist, sollten die Benutzer hindurchfallen. Die Plattform sollte auch einige Sekunden nach dem Ausblenden zurückkommen - andernfalls könnten die Benutzer den Sprung nicht erneut versuchen, wenn sie gescheitert sind. Die CanCollide-Eigenschaft steuert, ob Benutzer durch ein Teil hindurchfallen können.
Setze die CanCollide-Eigenschaft der Plattform nach der for-Schleife auf false.
Warte einige Sekunden mit der Funktion task.wait().
Setze die CanCollide-Eigenschaft zurück auf true.
Setze die Transparency-Eigenschaft zurück 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 Berührung kommt. Dieses Verhalten führt zu Problemen, wenn ein Benutzer über die ausblendende Plattform rennt: 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 mehrmals ausgelöst werden würde, wird als Debouncing bezeichnet.
Um eine Funktion zu debouncen, kann eine boolean-Variable verwendet werden, um zu verfolgen, ob 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 Hauptteil 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-Operator not kehrt den Wert von allem, was ihm folgt, um. In bedingten Begriffen bedeutet dies, dass die erste if-Anweisung sich genauso verhält wie die Anweisungen, die folgen.
if not isTouched thenendif isTouched == false thenendif isTouched == nil thenend
Debounce umschalten
Aktuell 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 Variablen an zwei Stellen umschalten.
- Setze isTouched im Inneren der if-Anweisung auf true, 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 wars! Teste deinen Code jetzt, und du solltest feststellen, dass die Plattform verblasst, wenn der Benutzer darauf springt, und nach ein paar Sekunden zurückkommt.
Du kannst diese Plattform über eine größere Lücke duplizieren, um ein herausforderndes Hindernis zu schaffen und die Geschwindigkeit, mit der sie verblassen, zu ändern, um die Schwierigkeit auszugleichen.
Finale 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)