Erstelle Spielergefahren

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.


Gefahrenobjekte verringern die Gesundheit der Spieler, wenn sie sie berühren.Als einfacher Ausgangspunkt lehrt dieser Abschnitt des Tutorials dich, wie du eine große unsichtbare Teil am selben Niveau wie das Wasser in deiner Erlebniserstellen kannst, so dass das Herunterfallen in die Gefahr die Gesundheit des Spieler:inauf Null bringt und sie zurück zum Beginn der Erlebnisrespawnet.

Erstelle eine grundlegende Wassergefahr

Um die grundlegende Wassergefahr zu schaffen:

  1. Füge im Explorer -Fenster einen neuen Ordner in den Welt -Ordner ein und benenne ihn dann Gefahren um.Stellen Sie sicher, dass der Name mit der richtigen Groß-/Kleinschreibung korrekt geschrieben ist, sonst funktioniert der Code nicht.

  2. In der Gefahren -Ordner füge einen Block -Teil ein und benenne ihn Gefahr um.

    Studio's Explorer window with the Hazard block Part highlighted under the Hazards folder.
  3. Bewegen und skalieren Sie das Teil, um die Wasserlinie rund um die Insel und Plattformen zu bedecken.Zum Beispiel legt die Probeprüfung Insel-Sprung - Skriptierung Erfahrung Größe auf und CFrame.Position auf fest.

    A far out view of all of the cylinder sea stacks and the island. A large block part covers the water where a player could land if they fell from a sea stack.
  4. Wählen Sie das Teil aus, dann konfigurieren Sie im Eigenschaften -Fenster die folgenden Eigenschaften, damit die Gefahr unsichtbar ist und Spieler durch sie hindurch gehen können:

    • Setze Transparenz auf . Dadurch wird die Gefahr unsichtbar, so dass das tatsächliche Wasser als Gefahr erscheint.
    • Deaktiviere Kann kollidieren .Das sagt der Engine, dass andere Teile durch die Gefahr ununterbrochen passieren können, was bedeutet, dass Spieler durch die Gefahr fallen können.
    • Aktiviere verankert .Dies sagt der Engine, dass sie die Position des Gefahrens niemals aufgrund einer physikbezogenen Simulation ändern soll, was bedeutet, dass Spieler die Gefahr berühren können, ohne ihre Lage zu beeinflussen.
  5. Erstelle ein Skript in ServerScriptService , benenne es dann in HazardService um.

  6. Ersetze den Standardcode durch den folgenden Codes:


    local Players = game:GetService("Players")
    local Workspace = game:GetService("Workspace")
    local hazardsFolder = Workspace.World.Hazards
    local hazards = hazardsFolder:GetChildren()
    local function onHazardTouched(otherPart)
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    humanoid.Health = 0
    end
    end
    end
    for _, hazard in hazards do
    hazard.Touched:Connect(onHazardTouched)
    end

    Der HazardService hat viele Ähnlichkeiten mit CoinService .Allerdings sammelt der Spieler stattdessen keine Münze, sondern setzt seine Gesundheit auf 0 , wenn er eine Gefahr berührt.

    Fühle dich frei, Gefahrenobjekte in deiner Erfahrung zu modifizieren, hinzufügenoder zu entfernen, um einzigartige Hindernisse zu schaffen.Solange sie im Gefahren Ordner enthalten sind, verbindet der Code-Loop den Ereignishändler mit all deinen Gefahren.

Verbinden mit dem Spielerlebenszyklus

Der Spielerlebenszyklus repräsentiert Ereignisse, die auftreten, wenn Spieler in deiner Erlebnisinteragieren, wie z. B. Beitreten, Verlassen oder Respawnen.Du musst Handler mit diesen Ereignissen verbinden, um für jedes wichtige Lebenszyklusereignis die Logik angemessen auszuführen.Im Skript, das. PL: die Skriptskopieren und fügen Sie den folgenden Code am Ende des Skript, das. PL: die Skriptsein:


local function onPlayerAdded(player)
-- Spieler-Münzen auf 0 zurücksetzen
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild würde die Spieler-Schleife stoppen, also sollte unten in einem separaten Thread ausgeführt werden
task.spawn(function()
-- Wenn ein Spieler stirbt
character:WaitForChild("Humanoid").Died:Connect(function()
-- Spieler-Münzen auf 0 zurücksetzen
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- Initialisiere alle Spieler, die vor der Verbindung mit dem Ereignis PlayerAdded hinzugefügt wurden
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)

Der Code definiert Funktionen zur Wiederherstellung der Münzenzähler während der entsprechenden Lebenszyklusereignisse:

  • Player.PlayerAdded feuert, wenn ein spieler der erlebnisbeitritt, und setzt die münzanzahl auf 0.
  • Player.CharacterAdded Feuert, wenn das Charaktermodell eines Spieler:inin die Welt hinzugefügt wird. Es tritt nach PlayerAdded und immer dann auf, wenn der Spieler respawniert.
  • Humanoid.Died feuert, wenn ein spieler stirbt, und setzt die münzenanzahl auf 0 . task.spawn() erstellt einen separaten thread für die bearbeitung dessen, so dass andere aspekte des spiellebenszyklus ausgeführt werden können.
  • Player.PlayerRemoved feuer, wenn ein spieler die erfahrung verlässt, um den spielerzustand zu löschen.
  • Dieser Code enthält ein mögliches Problem, bei dem Spieler Münzen sammeln könnten, bevor das Ereignis Players.PlayerAdded ausgeführt wird, und dann ihre Münzenzähler auf Null zurückgesetzt werden.Um dieses Problem zu lösen, erwägen Sie Lösungen wie das Planen von Code oder das Einfrieren des Charakters des Spieler:in, bis die Initialisierung abgeschlossen ist.Diese Lösungen beinhalten jedoch komplexere Skriptkonzepte, die über den Umfang dieses Tutorials hinausgehen.

Spieltest

Es ist Zeit zu sehen, ob die Spielergefahr wie beabsichtigt funktioniert. Wenn du das Wasser berührst, sollte dein Charakter sterben und seine Münzen verlieren. Um dein Spiel zu testen:

  1. Klicke in der Toolbar auf die Schaltfläche Spielen . Studio wechselt in den Spieltest-Modus.

    Play button highlighted in Studio's playtesting options.
  2. Bewegen Sie Ihren Charakter, um einige Münzen zu sammeln, und springen Sie dann ins Wasser.Wenn deine Skripte richtig funktionieren, stirbt dein Charakter und die Münzanzahl in der Rangliste wird auf 0 zurückgesetzt.