Menu
CoddyTech

Templat Kamar

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

Di balik pintu lobi belum ada apa-apa. Ruangan-ruangan tersebut adalah template di ServerStorage.Rooms, masing-masing berupa Model dengan part Entrance yang tidak terlihat (PrimaryPart-nya, sehingga menjadi pivot model) dan part Exit tempat pintunya berada.

Menempatkan ruangan setelah ruangan lain hanya perlu satu baris: letakkan pivot ruangan baru, yaitu pintu masuknya, pada pintu keluar ruangan sebelumnya:

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

Template berikutnya ditentukan di Settings.Order, sebuah list nama. Pintu ruangan baru juga memerlukan setupDoor.

challenge icon

Tantangan

Sedang
  1. Tambahkan local rooms = workspace.Rooms, local lastRoom = rooms.Lobby, dan local count = 0.
  2. Tulis addRoom() di bawah setupDoor: tambahkan 1 ke count, clone template bernama Settings.Order[count], pivot template itu ke lastRoom.Exit, jadikan parent-nya rooms, jadikan sebagai lastRoom, siapkan pintunya, lalu kembalikan template itu.
  3. Panggil addRoom() sekali di akhir script.

Tekan Play dan buka pintu lobi. Lalu tekan 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)

-- Malam tiba: tanpa matahari, 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 dilakukan 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)

-- 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)
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