Menu
CoddyTech

אוסף המטבעות

חלק מהיחידה תכנות משחקים ב-Roblox במסלול ה-Lua של Coddy. שיעור 15 מתוך 24.

משטח האוצר הגדיר את Coins ל־100. מטבע אמור להוסיף 1, וזה יוצר בעיה חדשה.

Touched מופעל פעם אחת עבור כל חלק בגוף שנוגע, ולכן צעד אחד על מטבע יכול להפעיל אותו כמה פעמים. הוסף נקודה אחת בכל פעם, ומטבע יחיד יעניק כמה נקודות.

הפתרון הוא מנגנון למניעת הפעלה חוזרת: משתנה שזוכר "זה כבר קרה" וגורם לקוד להתעלם מההפעלות החוזרות:

local used = false
button.Touched:Connect(function(hit)
	if not used then
		used = true
		print("Pressed!")
	end
end)

not used הוא true כאשר used הוא false, ולכן רק המגע הראשון עובר את if not used. a and b הוא true רק כאשר שניהם true: if player and not used then דורש שחקן ומטבע שלא נעשה בו שימוש.

כדי לאפשר לזה לקרות שוב מאוחר יותר, המתן ואפס את המשתנה: task.wait(3) ואז used = false. ההמתנה משהה רק את הפונקציה הזאת, ולכן מגעים אחרים ממשיכים להגיע ומתעלמים מהם כל עוד used הוא true.

value += 1 הוא קיצור של value = value + 1, ו־CanTouch = false גורם לחלק להפסיק להפעיל את Touched עד שמגדירים אותו שוב ל־true.

challenge icon

אתגר

בינוני

החיבורים של leaderstats ושל Touched מוכנים, אבל לחצו על הפעל ועברו דרך מטבע: Coins עולה ביותר מ־1.

תקנו את זה והשלימו את איסוף המטבעות:

  1. כל מטבע מעניק בדיוק 1 Coin בכל איסוף (מנגנון למניעת איסוף כפול לכל מטבע).
  2. מטבע שנאסף מוסתר: Transparency 1 ו־CanTouch false.
  3. כעבור 3 שניות הוא מופיע שוב (Transparency 0, CanTouch true) ואפשר לאסוף אותו שוב.

נסו בעצמכם

local Players = game:GetService("Players")
local coins = workspace.Coins

Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coinsValue = Instance.new("IntValue")
	coinsValue.Name = "Coins"
	coinsValue.Value = 0
	coinsValue.Parent = leaderstats
end)

for _, coin in coins:GetChildren() do
	coin.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		if player then
			player.leaderstats.Coins.Value += 1
		end
	end)
end
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה תכנות משחקים ב-Roblox

תרגלו בעצמכם: קומפיילר Lua אונליין