Menu
CoddyTech

אחד אחרי השני

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

חדר אחד שנוצר בתחילת המשחק יוצר משחק עם חדר אחד. המשחק אמור ליצור חדר כשדלת נפתחת: פותחים את הדלת של החדר החדש ביותר, ומאחוריה נמצא חדר חדש.

לכן שתי פונקציות זקוקות זו לזו: setupDoor קוראת ל־addRoom, ו־addRoom קוראת ל־setupDoor. צריך להצהיר על משתנה מקומי לפני שהקוד יכול להשתמש בו, לכן מצהירים על addRoom תחילה וכותבים אותה בהמשך:

local addRoom -- מוצהר כאן, מוגדר בהמשך

local function setupDoor(door)
	-- ... addRoom() ...
end

function addRoom()
	-- ... setupDoor(room.Door) ...
end

כשהספירה מגיעה ל־Settings.RoomsToEscape (10), החדר הוא התבנית Exit, עם דלת ירוקה. לעת עתה היא נפתחת כמו כל דלת אחרת; בפרק 4 היא תהפוך לדרך החוצה.

challenge icon

אתגר

בינוני

צרו חדר חדש מאחורי כל דלת שאתם פותחים.

  1. הכריזו על local addRoom מעל setupDoor וכתבו אותה בהמשך בתור function addRoom(). הסירו את הקריאה ל־addRoom() בסוף.
  2. בתוך setupDoor, לפני פתיחת הדלת: אם door.Parent == lastRoom, קראו ל־addRoom().
  3. בתוך addRoom, השתמשו בתבנית "Exit" ברגע ש־count >= Settings.RoomsToEscape.

לחצו על "שחק" ופתחו שלוש דלתות: מאחורי כל אחת מחכה חדר חדש. ואז לחצו על "בדיקה".

נסו בעצמכם

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 function setupDoor(door)
	door.Panel.Prompt.Triggered:Connect(function(player)
		if door:GetAttribute("Open") then
			return
		end
		-- שיעור 5: אחד אחרי השני נכנס כאן
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

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

addRoom()

-- כל שחקן: פנס בכל פעם שהוא חוזר לחיים
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)

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

תרגלו בעצמכם: Roblox אונליין