Tách một chồng xu
Bài học 3 trên 20 trong khóa học Trò chơi Roblox: mô phỏng thú cưng của Coddy.
Người chơi phá các đống bằng cách nhấp vào chúng. ClickDetector bên trong một bộ phận sẽ kích hoạt MouseClick trên máy chủ, kèm theo người chơi đã nhấp, khi họ đến đủ gần.
Mỗi lần nhấp sẽ giảm Health của đống đi 1. Khi giá trị này chạm 0, đống sẽ vỡ: người chơi nhận được số xu bằng Value của đống, rồi đống bị phá hủy.
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
return
end
-- đã vỡSự kiện nhấp được kết nối bên trong spawnPile và gọi hitPile, được viết bên dưới spawnPile. Một hàm chỉ có thể dùng tên cục bộ đã được khai báo, vì vậy trước tiên hãy khai báo local hitPile ở phía trên cả hai, rồi viết phần thân hàm sau bằng function hitPile(player, pile).
Thử thách
DễPhá một đống bằng cách nhấp vào nó.
- Phía trên
spawnPile, khai báolocal hitPile. - Trong
spawnPile, thêm một ClickDetector vào đống;MouseClickcủa nó gọihitPile(player, pile). - Bên dưới, viết
function hitPile(player, pile): giảmHealthđi 1; nếu lớn hơn 0, lưu giá trị đó rồi dừng; nếu không, cộngValuecủa đống vào Coins rồi phá hủy đống.
Nhấn Chơi rồi nhấp vào một đống ba lần: đống đó vỡ và Coins tăng thêm 5. Sau đó nhấn Kiểm tra.
Tự làm thử
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")
-- Mỗi người chơi có Coins trên bảng xếp hạng
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)
-- Đống xu tại một vị trí: bản sao của ServerStorage.CoinPile với lượng máu
-- và giá trị được lưu dưới dạng thuộc tính
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
-- Bài học 3: Phá đống xu nằm ở đây
-- Mỗi vị trí trong Meadow có một đống xu
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
Tất cả bài học trong Trò chơi Roblox: mô phỏng thú cưng
Tự luyện tập: Playground Roblox