Menu
CoddyTech

פרקו ערמה

שיעור 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).

challenge icon

אתגר

קל
  1. מעל spawnPile, הצהר על local hitPile.
  2. בתוך spawnPile, הוסף ClickDetector לערימה וחבר את MouseClick שלה אל hitPile(player, pile).
  3. מתחת ל־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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה משחק Roblox: סימולטור חיות מחמד