Nomor Kamar
Pelajaran 6 dari 20 dalam kursus Game Roblox: Kabur dari Kegelapan di Coddy.
Pemain perlu tahu seberapa jauh mereka telah melangkah. Setiap ruangan memiliki nomornya sendiri: sebagai atribut, Number, dan pada papan di atas pintunya (Sign.SurfaceGui.Number).
Setiap ruangan memiliki bagian Entry yang tidak terlihat, satu langkah di dalam pintu masuknya. Saat tubuh pemain menyentuhnya, ruangan itu menjadi Room mereka di papan peringkat dan titik pemeriksaan mereka: RespawnLocation pemain adalah SpawnLocation tempat mereka kembali, dan setiap ruangan memiliki satu, Checkpoint.
player.RespawnLocation = room.CheckpointPlayers:GetPlayerFromCharacter(hit.Parent) menunjukkan tubuh siapa yang menyentuhnya, atau nil.
Tantangan
Sedang- Berikan setiap pemain
Roomdi papan peringkat (sebuah Folder leaderstats dengan IntValue). - Di dalam
addRoom, tetapkan atributNumberruangan kecountdan papan tandanya ke"Room " .. count(Room 1untuk ruangan pertama). - Tulis
setupEntry(room): saatEntry-nya disentuh pemain, tetapkan Room mereka ke nomor ruangan tersebut dan RespawnLocation mereka ke Checkpoint-nya. Panggil fungsi ini untuk Lobby dan setiap ruangan baru.
Tekan Mainkan, lalu Periksa.
Coba sendiri
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 -- ruangan terbaru
local count = 0 -- jumlah ruangan yang sudah dibuat
-- Malam tiba: matahari menghilang, ada sedikit cahaya di mana-mana, dan kabut
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")
-- Ayunkan pintu hingga terbuka pada engselnya
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 -- ditulis di bawah: pintu menambahkan ruangan, dan ruangan memiliki pintu
-- Apa yang dilakukan pintu saat pemain membukanya
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)
-- Ruangan baru di pintu keluar ruangan terbaru
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
-- Setiap pemain: satu senter setiap kali hidup
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)
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Game Roblox: Kabur dari Kegelapan
Latihan sendiri: Playground Roblox