Menu
CoddyTech

מספרי חדרים

שיעור 6 מתוך 20 בקורס משחק Roblox: בריחה מהחושך של Coddy.

השחקן צריך לדעת מה העומק שלו. לכל חדר יש מספר: כמאפיין, Number, ועל השלט שמעל הדלת שלו (Sign.SurfaceGui.Number).

בכל חדר יש חלק בלתי נראה בשם Entry, צעד אחד פנימה מהכניסה שלו. כשגופו של שחקן נוגע בו, החדר הזה הופך ל-Room שלו בטבלת הדירוג ולנקודת הביקורת שלו: ה-RespawnLocation של השחקן הוא ה-SpawnLocation שבו הוא חוזר, ולכל חדר יש אחד כזה, Checkpoint.

player.RespawnLocation = room.Checkpoint

Players:GetPlayerFromCharacter(hit.Parent) אומר של מי הגוף שנגע בו, או nil.

challenge icon

אתגר

בינוני
  1. תן לכל שחקן את Room בטבלת הדירוג (תיקיית Folder בשם leaderstats עם IntValue).
  2. ב־addRoom, הגדר את המאפיין Number של החדר ל־count ואת השלט שלו ל־"Room " .. count (Room 1 עבור החדר הראשון).
  3. כתוב את setupEntry(room): כאשר שחקן נוגע ב־Entry שלו, הגדר את Room שלו למספר החדר ואת RespawnLocation שלו ל־Checkpoint שלו. קרא לה עבור ה־Lobby ועבור כל חדר חדש.

לחץ על Play, ואז על Check.

נסו בעצמכם

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

local rooms = workspace.Rooms
local lastRoom = rooms.Lobby -- החדר החדש ביותר
local count = 0 -- חדרים שנוצרו עד כה

-- הלילה יורד: אין שמש, יש מעט אור בכל מקום, ויש ערפל
Lighting.ClockTime = Settings.ClockTime
Lighting.Ambient = Settings.Ambient
Lighting.OutdoorAmbient = Settings.Ambient
Lighting.FogColor = Color3.new(0, 0, 0)
Lighting.FogEnd = Settings.FogEnd
print("Lights out")

-- פותחים דלת בסיבוב על הציר שלה
local function openDoor(door)
	door:SetAttribute("Open", true)
	door.Panel.Prompt.Enabled = false
	local hinge, panel = door.Hinge, door.Panel
	local goal = hinge.CFrame * CFrame.Angles(0, math.rad(90), 0) * hinge.CFrame:ToObjectSpace(panel.CFrame)
	TweenService:Create(panel, TweenInfo.new(0.6), { CFrame = goal }):Play()
end

local addRoom -- מוגדר בהמשך: דלת מוסיפה חדר, ובחדר יש דלת

-- מה קורה כששחקן פותח דלת
local function setupDoor(door)
	door.Panel.Prompt.Triggered:Connect(function(player)
		if door:GetAttribute("Open") then
			return
		end
		if door.Parent == lastRoom then
			addRoom()
		end
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

-- חדר חדש ביציאה מהחדר החדש ביותר
function addRoom()
	count += 1
	local name = Settings.Order[(count - 1) % #Settings.Order + 1]
	if count >= Settings.RoomsToEscape then
		name = "Exit"
	end
	local room = ServerStorage.Rooms[name]:Clone()
	room:PivotTo(lastRoom.Exit.CFrame)
	room.Parent = rooms
	lastRoom = room
	setupDoor(room.Door)
	return room
end

-- כל שחקן: פנס בכל פעם שהוא חוזר לחיים
Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function()
		local flashlight = ServerStorage.Flashlight:Clone()
		flashlight.Parent = player.Backpack
		local beam = flashlight.Handle.Beam
		flashlight.Activated:Connect(function()
			beam.Enabled = not beam.Enabled
		end)
	end)
end)
quiz iconבחנו את עצמכם

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

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