הופעת מטבעות מחדש
חלק מהיחידה תכנות משחקים ב-Roblox במסלול ה-Lua של Coddy. שיעור 16 מתוך 25.
כל מטבע נותן עכשיו 1, פעם אחת. מטבע אמיתי צריך להיעלם ואז לחזור, כדי שאפשר יהיה לאסוף אותו שוב.
Transparency = 1 מסתיר חלק, אבל הוא עדיין מפעיל את Touched. CanTouch = false גורם לחלק להפסיק להפעיל את Touched עד שמחזירים אותו ל־true.
כדי להחזיר אותו, מחכים בתוך פונקציית Touched ומבטלים את השינויים. task.wait משהה רק את הפונקציה הזאת, כך שנגיעות אחרות ממשיכות להגיע ונעשה להן התעלמות כל עוד מנגנון ההשהיה הוא true:
local used = false
pad.Touched:Connect(function(hit)
if not used then
used = true
pad.Transparency = 0.5
task.wait(5)
pad.Transparency = 0
used = false
end
end)המשטח מתפוגג למשך 5 שניות אחרי נגיעה, ואז הוא חוזר ומוכן שוב.
אתגר
בינוניהסתירו מטבע שנאסף, ואז החזירו אותו כעבור 3 שניות.
- אחרי השורה שמוסיפה את המטבע, הסתירו אותו:
coin.Transparency = 1וגםcoin.CanTouch = false. - אחר כך
task.wait(3)והציגו אותו שוב:Transparency0,CanTouchtrue. - לבסוף, הגדירו
collected = falseכדי שאפשר יהיה לאסוף אותו שוב.
לחצו על "שחק" ועברו דרך מטבע: הוא נעלם וחוזר כעבור 3 שניות. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
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
local collected = false
coin.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and not collected then
collected = true
player.leaderstats.Coins.Value += 1
end
end)
end
כל השיעורים ביחידה תכנות משחקים ב-Roblox
תרגלו בעצמכם: קומפיילר Lua אונליין