Tumpukan Kembali
Pelajaran 4 dari 18 dalam kursus Game Roblox: Simulator Hewan Peliharaan di Coddy.
Setelah semua tumpukan hancur, koin dalam game akan habis. Tumpukan yang hancur harus kembali ke posisinya setelah Settings.RespawnTime detik.
Tumpukan harus mengingat posisinya. Tabel dengan kunci berupa tumpukan dapat melakukan itu:
local pileSpot = {} -- setiap pile -> spot tempat pile itu berada
pileSpot[pile] = spottask.delay(seconds, fn, ...) memanggil fungsi nanti dengan argumen, tanpa menghentikan apa pun sekarang:
task.delay(Settings.RespawnTime, spawnPile, spot)Hapus tumpukan dari tabel saat tumpukan itu hancur, agar tabel tidak menyimpan semua tumpukan yang pernah ada.
Tantangan
Mudah- Di dekat bagian atas:
local pileSpot = {}. - Di dalam
spawnPile, simpanpileSpot[pile] = spot. - Di dalam
hitPile, saat tumpukan pecah: baca lokasinya, hapus daripileSpot, hancurkan tumpukan, lalu jalankantask.delay(Settings.RespawnTime, spawnPile, spot).
Tumpukan dalam pelajaran ini muncul kembali setelah 1 detik. Tekan Play, lalu Periksa.
Coba sendiri
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")
-- Setiap pemain mendapat Coins di leaderboard
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)
-- Klik pada tumpukan memerlukan hitPile, yang ditulis di bawah spawnPile: deklarasikan namanya
-- di sini, sebelum keduanya
local hitPile
-- Tumpukan koin di suatu titik: salinan ServerStorage.CoinPile dengan kesehatan
-- dan nilai sebagai atribut
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)
-- klik untuk memukulnya
local detector = Instance.new("ClickDetector")
detector.Parent = pile
pile.Parent = piles
detector.MouseClick:Connect(function(player)
hitPile(player, pile)
end)
return pile
end
-- Satu pukulan mengurangi kesehatan tumpukan sebesar 1;
-- saat mencapai 0, tumpukan hancur dan memberikan nilainya
function hitPile(player, pile)
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
return
end
player.leaderstats.Coins.Value += pile:GetAttribute("Value")
pile:Destroy()
end
-- Satu tumpukan di setiap titik di Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Game Roblox: Simulator Hewan Peliharaan
Latihan sendiri: Playground Roblox