Oda Numaraları
Coddy'nin Roblox Oyunu: Karanlıktan Kaçış kursunda ders 6 / 20.
Bir oyuncu ne kadar derinde olduğunu bilmelidir. Her odanın bir numarası vardır: öznitelik olarak Number ve kapısının üzerindeki tabelada (Sign.SurfaceGui.Number).
Her odanın girişinin bir adım içinde görünmez bir Entry parçası vardır. Bir oyuncunun karakteri bu parçaya dokunduğunda, o oda liderlik tablosunda oyuncunun Room değeri ve kontrol noktası olur: oyuncunun RespawnLocation değeri, geri döneceği SpawnLocation'dır ve her odada bir tane, Checkpoint bulunur.
player.RespawnLocation = room.CheckpointPlayers:GetPlayerFromCharacter(hit.Parent), hangi oyuncunun karakterinin ona dokunduğunu söyler; yoksa nil döndürür.
Görev
Orta- Liderlik tablosunda her oyuncuya
Roomverin (bir leaderstats Folder ve bir IntValue). addRoomiçinde, odanınNumberözniteliğinicountolarak ve tabelasını"Room " .. countolarak ayarlayın (ilk oda içinRoom 1).setupEntry(room)fonksiyonunu yazın: oyuncu odanınEntryöğesine dokunduğunda, Room değerini odanın numarasına, RespawnLocation değerini ise odanın Checkpoint değerine ayarlayın. Bu fonksiyonu Lobby ve oluşturulan her yeni oda için çağırın.
Play'e, ardından Check'e basın.
Kendin dene
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 -- en yeni oda
local count = 0 -- şimdiye kadar oluşturulan oda sayısı
-- Gece çöker: güneş yok, her yerde hafif bir ışık ve sis var
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")
-- Bir kapıyı menteşesi üzerinde döndürerek aç
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 -- aşağıda tanımlandı: bir kapı bir oda ekler ve bir odanın kapısı vardır
-- Bir oyuncu kapıyı açtığında kapının yaptığı şey
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)
-- En yeni odanın çıkışında yeni bir oda
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
-- Her oyuncu: her can için bir el feneri
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)
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.