Menu
CoddyTech

שיגור שחקנים

שיעור 6 מתוך 18 בקורס משחק Roblox: הישרדות באסונות של Coddy.

אי שאף אחד לא עומד עליו הוא לא משחק. כשסיבוב מתחיל, כל שחקן עובר אל Spawn שבמפה, וכשהוא מסתיים, חוזר ללובי.

Players:GetPlayers() מציגה את כל השחקנים במשחק, והגוף של שחקן הוא player.Character, מסוג Model. Model:PivotTo(cframe) מזיזה מודל שלם בבת אחת, תוך שמירה על המיקום היחסי של כל חלק. CFrame הוא מיקום בתוספת סיבוב, והוספת Vector3 מזיזה אותו:

local function teleport(player, target)
	local character = player.Character
	if character then
		character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
	end
end

ה־4 studs כלפי מעלה מציבים את השחקן מעט מעל היעד, במקום בתוכו. player.Character הוא nil לרגע אחרי הצטרפות או מוות, ולכן יש את if.

challenge icon

אתגר

בינוני

העבר את השחקנים:

  1. בחלק העליון, שמור את נקודת ההופעה של הלובי: local lobbySpawn = workspace.LobbySpawn.
  2. כתוב את teleport(player, target) כמו בשיעור.
  3. מיד לאחר טעינת המפה, העבר כל שחקן אל map.Spawn.
  4. כשהספירה לאחור של הסיבוב מסתיימת, העבר כל שחקן אל lobbySpawn, לפני השמדת המפה.

לחץ על Play וצפה במתרחש, ואז לחץ על Check.

נסו בעצמכם

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)

print("Rounds last " .. Settings.RoundLength .. " seconds")

-- כל שחקן מקבל Wins בטבלת המובילים
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local wins = Instance.new("IntValue")
	wins.Name = "Wins"
	wins.Parent = leaderstats
end)

-- לוח המצב באזור ההמתנה
local gui = Instance.new("SurfaceGui")
gui.Parent = workspace.StatusBoard

local status = Instance.new("TextLabel")
status.Name = "Status"
status.Size = UDim2.fromScale(1, 1)
status.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
status.TextColor3 = Color3.fromRGB(255, 255, 255)
status.TextScaled = true
status.Text = "Welcome to Disaster Survival!"
status.Parent = gui

local function setStatus(text)
	status.Text = text
end

-- לולאת הסיבובים
while true do
	for seconds = Settings.Intermission, 1, -1 do
		setStatus("Intermission: " .. seconds)
		task.wait(1)
	end

	local map = ServerStorage.Maps.Island:Clone()
	map.Name = "Map"
	map.Parent = workspace

	for seconds = Settings.RoundLength, 1, -1 do
		setStatus("Time left: " .. seconds)
		task.wait(1)
	end

	map:Destroy()
end
quiz iconבחנו את עצמכם

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

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