פרקו ערמה
שיעור 3 מתוך 18 בקורס משחק Roblox: סימולטור חיות מחמד של Coddy.
שחקנים שוברים ערמות בלחיצה עליהן. ClickDetector שנמצא בתוך חלק מפעיל את MouseClick בשרת, יחד עם השחקן שלחץ, כשהוא קרוב מספיק.
כל לחיצה מפחיתה 1 מהערך של Health בערמה. כשהערך מגיע ל־0, הערמה נשברת: השחקן מקבל את הערך שלה ב־Value במטבעות, והערמה מושמדת.
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
return
end
-- שבורהלחיצה מחוברת בתוך spawnPile, והיא קוראת ל־hitPile, שמוגדרת בהמשך, אחרי spawnPile. פונקציה יכולה להשתמש בשם מקומי רק אם הוא כבר הוצהר, לכן יש להצהיר קודם על local hitPile, לפני שתיהן, ולמלא אותו בהמשך באמצעות function hitPile(player, pile).
אתגר
קל- מעל
spawnPile, הצהר עלlocal hitPile. - בתוך
spawnPile, הוסף ClickDetector לערימה וחבר אתMouseClickשלה אלhitPile(player, pile). - מתחת ל־
spawnPile, כתובfunction hitPile(player, pile): הפחת 1 מתכונת Health; אם הערך עדיין גדול מ־0, שמור אותו ועצור; אחרת הוסף את ערך ה־Value של הערימה אל Coins של השחקן והשמד את הערימה.
לחץ על Play ולחץ על ערימה שלוש פעמים. לאחר מכן לחץ על Check.
נסו בעצמכם
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")
-- כל שחקן מקבל Coins בטבלת המובילים
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)
-- ערימת מטבעות בנקודה: עותק של ServerStorage.CoinPile עם הבריאות שלה
-- והערך שלה כמאפיינים
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
-- ערימה בכל נקודה ב-Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.