Menu
CoddyTech

Satu demi Satu

Pelajaran 5 dari 20 dalam kursus Game Roblox: Kabur dari Kegelapan di Coddy.

Satu ruangan yang dibuat di awal akan menghasilkan game dengan satu ruangan. Game seharusnya membuat ruangan saat sebuah pintu terbuka: buka pintu ruangan terbaru, dan ruangan baru ada di baliknya.

Ini menghasilkan dua fungsi yang saling membutuhkan: setupDoor memanggil addRoom, dan addRoom memanggil setupDoor. Variabel lokal harus dideklarasikan sebelum kode dapat menggunakannya, jadi addRoom dideklarasikan terlebih dahulu dan ditulis setelahnya:

local addRoom -- dideklarasikan di sini, ditulis di bawah

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

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

Saat jumlahnya mencapai Settings.RoomsToEscape, ruangannya adalah template Exit: jalan keluar.

challenge icon

Tantangan

Sedang
  1. Deklarasikan local addRoom di atas setupDoor, lalu tulis sebagai function addRoom().
  2. Di setupDoor, sebelum membuka pintu: jika pintu itu milik lastRoom, tambahkan sebuah ruangan.
  3. Di addRoom, gunakan template Exit setelah count mencapai Settings.RoomsToEscape.
  4. Hapus pemanggilan addRoom() di bagian akhir.

Dunia di pelajaran ini memiliki jalan keluar yang singkat (3 ruangan). Tekan Play, lalu Check.

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 dibuat sejauh ini

-- Malam tiba: matahari tidak terlihat, 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

-- Yang terjadi pada pintu saat pemain membukanya
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)

-- Ruangan baru di pintu keluar ruangan terbaru
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()

-- Setiap pemain mendapat senter setiap kali hidup kembali
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 iconUji dirimu

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