מספרי חדרים
שיעור 6 מתוך 20 בקורס משחק Roblox: בריחה מהחושך של Coddy.
השחקן צריך לדעת מה העומק שלו. לכל חדר יש מספר: כמאפיין, Number, ועל השלט שמעל הדלת שלו (Sign.SurfaceGui.Number).
בכל חדר יש חלק בלתי נראה בשם Entry, צעד אחד פנימה מהכניסה שלו. כשגופו של שחקן נוגע בו, החדר הזה הופך ל-Room שלו בטבלת הדירוג ולנקודת הביקורת שלו: ה-RespawnLocation של השחקן הוא ה-SpawnLocation שבו הוא חוזר, ולכל חדר יש אחד כזה, Checkpoint.
player.RespawnLocation = room.CheckpointPlayers:GetPlayerFromCharacter(hit.Parent) אומר של מי הגוף שנגע בו, או nil.
אתגר
בינוני- תן לכל שחקן את
Roomבטבלת הדירוג (תיקיית Folder בשם leaderstats עם IntValue). - ב־
addRoom, הגדר את המאפייןNumberשל החדר ל־countואת השלט שלו ל־"Room " .. count(Room 1עבור החדר הראשון). - כתוב את
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)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.