Menu
CoddyTech

צעדו בשביל

שיעור 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, והסקריפט ממשיך לפעול.

challenge icon

אתגר

קל
  1. קבל את ServerStorage ואת local enemies = workspace.Enemies.
  2. שים את נקודות הציון ברשימה ומיין אותה לפי מספר.
  3. כתוב את walkPath(enemy): עבור נקודות ציון 2 ועד האחרונה, שלח אותו אליהן באמצעות MoveTo עד ש-MoveToFinished מציין שהוא הגיע. עצור אם האויב נעלם (not enemy.Parent).
  4. כתוב את spawnEnemy(kind): שכפל את המודל, מקם אותו 5 studs מעל נקודת ציון 1, קבע את enemies כהורה שלו, התחל את walkPath באמצעות task.spawn, והחזר אותו.
  5. צור "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)
quiz iconבחנו את עצמכם

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

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