Menu
CoddyTech

תבניות חדרים

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

מאחורי דלת הלובי עדיין אין כלום. החדרים הם תבניות בתוך ServerStorage.Rooms, וכל אחד מהם הוא Model עם חלק Entrance בלתי נראה (ה-PrimaryPart שלו, ולכן הוא הציר של המודל) וחלק Exit שבו נמצאת הדלת שלו.

הצבת חדר אחרי חדר אחר נעשית בשורה אחת: מציבים את הציר של החדר החדש, כלומר את הכניסה שלו, ביציאה של החדר הישן:

local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)

איזו תבנית תבוא בהמשך מוגדר ב-Settings.Order, רשימת שמות. גם הדלת של חדר חדש צריכה setupDoor.

challenge icon

אתגר

בינוני
  1. הוסף local rooms = workspace.Rooms, את local lastRoom = rooms.Lobby ואת local count = 0.
  2. כתוב addRoom() מתחת ל־setupDoor: הוסף 1 ל־count, שכפל את התבנית בשם Settings.Order[count], העבר אותה אל lastRoom.Exit, הגדר את ההורה שלה ל־rooms, הפוך אותה ל־lastRoom, הגדר את הדלת שלה, והחזר אותה.
  3. קרא ל־addRoom() פעם אחת בסוף הסקריפט.

לחץ על 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)

-- הלילה יורד: אין שמש, מעט אור בכל מקום וערפל
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)

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