Fallen, die die Gesundheit der Spieler verringern, sind ein lustiges Spiel-Element, das mit Bedingungen programmiert werden kann.Übe das Verwenden von Bedingungen, indem du ein Teil erstellst, das die Gesundheit des Spieler:inauf Null setzt, wenn es berührt wird.
Stelle die Falle ein
Fallen funktionieren außergewöhnlich gut in Erlebnissen mit bewegungsbezogenen Herausforderungen, wie Obbies.Diese Schritte beginnen damit, die notwendigen Variablen und Funktionen einzurichten.Mach so viel wie möglich, ohne zuerst die Codeboxen anzusehen.
Erstelle und benenne ein Fallteile-Teil. Füge ein Skript in das Teil ein.
Füge im Skript, das. PL: die Skriptseinen beschreibenden Kommentar hinzu und verwende dann eine Variable, um den übergeordnetes Teildes Skript, das. PL: die Skriptszu referenzieren.
-- Wenn ein Spieler diesen Teil berührt, setze seine Gesundheit auf 0local trapPart = script.ParentErstelle eine Funktion namens onTouch() mit einem Parameter namens otherPart.
-- Wenn ein Spieler diesen Teil berührt, setze seine Gesundheit auf 0local trapPart = script.Parentlocal function onTouch(otherPart)endVerbinde die Funktion mit dem Touched-Ereignis des Fallteils, um es zu laufen, wann immer etwas die Teile berührt.
local trapPart = script.Parentlocal function onTouch(otherPart)endtrapPart.Touched:Connect(onTouch)
Überprüfe die Berührung des Spielers
Denken Sie daran, der Parameter otherPart speichert alles, was die Fallteile berührt, was möglicherweise ein Teil eines Spielers oder nur die Grundplatte ist.
Um sicherzustellen, dass die Falle nur Spieler zerstört und keine zufälligen Dekorationsgegenstände zerstört, verwende eine if/then-Anweisung, um zu überprüfen, ob irgendetwas in otherPart enthält ein Humanoid-Objekt.
Ein bestimmtes Objekt finden
Die Funktion FindFirstChildWhichIsA() kann verwendet werden, um nach bestimmten Objektarten zu suchen, was praktisch ist, weil wir ein menschliches Objekt suchen.Spieler werden wahrscheinlich die Falle mit nur einem Teil ihres Avatars berühren, sodass eine Variable eingerichtet werden muss, um den Elternteil des berührenden Teils zu finden und ihn auf einen Humanoiden zu durchsuchen.
In onTouch() , geben Sie local character = otherPart.Parent ein.
local trapPart = script.Parentlocal function onTouch(otherPart)-- Findet das Objektvon otherPartlocal character = otherPart.ParentendtrapPart.Touched:Connect(onTouch)Überprüfen Sie, ob character einen Humanoid hat, indem Sie tippen:
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")endtrapPart.Touched:Connect(onTouch)
Überprüfen mit einer if- statement
Wenn ein Humanoid gefunden wird, wird die Gesundheit des Humanoids auf Null gesetzt.
Verwende ein if-Statement, um zu überprüfen, ob ein Humanoid erfolgreich zu local humanoid zugewiesen wurde.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Prüft, ob ein Humanoid gefunden wurdeif humanoid thenendendtrapPart.Touched:Connect(onTouch)Füge eine Druckausgabe hinzu und prüfe den Code bisher.
local trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Prüft, ob ein Humanoid gefunden wurdeif humanoid thenprint("Found a Humanoid")endendtrapPart.Touched:Connect(onTouch)Führe den Code aus und überprüfe, dass du die Ausgabe sehen kannst, wann immer ein Spieler das Teil berührt.
Ändere die Gesundheit des Spieler:in
Wenn die Aussage wahr ist, kannst du die gleiche humanoide Variable verwenden, um die Gesundheit des Spieler:inauf 0 zu setzen.
Zwischen then und end, geben Sie humanoid.Health = 0 ein.
Abgeschlossenes Skript, das. PL: die Skriptslocal trapPart = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")-- Prüft, ob ein Humanoid gefunden wurdeif humanoid thenprint("Found a Humanoid")humanoid.Health = 0endendtrapPart.Touched:Connect(onTouch)Teste die Falle.
Übersicht
Dieser Fallabschnitt verwendete Bedingungen, um menschliche Teile zu erkennen und die Gesundheit des Humanoiden auf Null zu setzen.Dieses Skript ist eine Verbesserung des vorherigen Skript, das. PL: die Skripts, das jedes berührende Objekt zerstörte, egal was es war.
Es hat jedoch immer noch einige Mängel.Humanoiden sind nicht nur in Spielern.Humanoiden findet man auch in nicht spielbaren Charakteren.Das Skript ist auch nur gut darin, die Gesundheit des Spieler:inauf Null zu setzen.Du kannst mit der Abziehung einer kleinen Menge Gesundheit experimentieren, aber es ist wahrscheinlich, dass es die Gesundheit schneller abzieht, als gewünscht.Spätere Lektionen bieten weitere Verbesserungen, um mehr Kontrolle darüber zu geben, wie viel Gesundheit von den Spielern abgezogen wird.