Menu
CoddyTech

אחד אחרי השני

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

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

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

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

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

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

כשהמונה מגיע ל־Settings.RoomsToEscape, החדר הוא תבנית Exit: הדרך החוצה.

challenge icon

אתגר

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

לעולם של השיעור הזה יש דרך יציאה קצרה (3 חדרים). לחץ על הפעלה, ואז על בדיקה.

נסו בעצמכם

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
		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)
quiz iconבחנו את עצמכם

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

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