Einen Haufen teilen
Lektion 3 von 18 im Kurs Roblox-Spiel: Haustiersimulator von Coddy.
Spieler zerstören Haufen, indem sie darauf klicken. Ein ClickDetector innerhalb eines Parts löst auf dem Server MouseClick aus, wobei der Spieler, der geklickt hat, übergeben wird, wenn er nah genug ist.
Jeder Klick zieht dem Haufen 1 von seiner Health ab. Wenn sie 0 erreicht, zerbricht der Haufen: Der Spieler erhält seinen Value in Münzen, und der Haufen wird zerstört.
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
return
end
-- kaputtDer Klick wird innerhalb von spawnPile verbunden und ruft hitPile auf, das unterhalb von spawnPile geschrieben wird. Eine Funktion kann nur einen lokalen Namen verwenden, der bereits deklariert wurde. Deklariere also zuerst local hitPile oberhalb von beiden und ergänze die Funktion später mit function hitPile(player, pile).
Aufgabe
Einfach- Füge oberhalb von
spawnPiledie Deklarationlocal hitPileein. - Füge in
spawnPiledem Haufen einen ClickDetector hinzu und verbinde seinMouseClickmithitPile(player, pile). - Schreibe unterhalb von
spawnPilefunction hitPile(player, pile): Ziehe 1 vom Health-Attribut ab; wenn es weiterhin über 0 liegt, speichere den Wert und beende die Funktion; andernfalls addiere den Value des Haufens zu den Coins des Spielers und zerstöre den Haufen.
Klicke auf Play und klicke dreimal auf einen Haufen. Klicke dann auf Check.
Probier es selbst
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local piles = workspace.Piles
print("A Meadow pile gives " .. Settings.PileValue .. " coins")
-- Jeder Spieler erhält Coins auf der Bestenliste
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Parent = leaderstats
end)
-- Ein Münzhaufen an einem spot: eine Kopie von ServerStorage.CoinPile mit Gesundheit
-- und Wert als Attribute
local function spawnPile(spot)
local pile = ServerStorage.CoinPile:Clone()
pile.Position = spot.Position
pile:SetAttribute("MaxHealth", Settings.PileHealth)
pile:SetAttribute("Health", Settings.PileHealth)
pile:SetAttribute("Value", Settings.PileValue)
pile.Parent = piles
return pile
end
-- Ein Haufen an jedem spot in Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.