צעדו בשביל
שיעור 2 מתוך 18 בקורס משחק Roblox: הגנת מגדלים של Coddy.
האויבים הולכים במסלול שמסומן בחלקים בלתי נראים בתוך workspace.Path.Waypoints, ששמם 1 עד 6. GetChildren לא מבטיח סדר מסוים, לכן יש למיין אותם תחילה לפי המספר שבשם שלהם:
table.sort(waypoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)כל אויב הוא מודל בתוך ServerStorage.Enemies: משכפלים אותו, מציבים אותו מעל נקודת הציון 1 באמצעות PivotTo, והופכים את workspace.Enemies לאב שלו.
Humanoid הולך באמצעות MoveTo, ואירוע MoveToFinished שלו מופעל כשהוא מגיע. הוא מוותר אחרי 8 שניות ומופעל עם false, לכן אויב איטי במקטע ארוך נשלח שוב עד שהוא מגיע:
repeat
humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait()ההליכה אורכת זמן, לכן walkPath פועל בשרשור משלו באמצעות task.spawn, והסקריפט ממשיך לפעול.
אתגר
קל- קבל את
ServerStorageואתlocal enemies = workspace.Enemies. - שים את נקודות הציון ברשימה ומיין אותה לפי מספר.
- כתוב את
walkPath(enemy): עבור נקודות ציון 2 ועד האחרונה, שלח אותו אליהן באמצעותMoveToעד ש-MoveToFinishedמציין שהוא הגיע. עצור אם האויב נעלם (not enemy.Parent). - כתוב את
spawnEnemy(kind): שכפל את המודל, מקם אותו 5 studs מעל נקודת ציון 1, קבע אתenemiesכהורה שלו, התחל אתwalkPathבאמצעותtask.spawn, והחזר אותו. - צור
"Zombie"אחד.
לחץ על Play וצפה בו הולך. לאחר מכן לחץ על Check.
נסו בעצמכם
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
print("The base can take " .. Settings.BaseHealth .. " hits")
-- כל שחקן מקבל Money בלוח המובילים
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = Settings.StartMoney
money.Parent = leaderstats
end)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.