Menu
CoddyTech

Ard Arda

Coddy'nin Roblox Oyunu: Karanlıktan Kaçış kursunda ders 5 / 25.

Başlangıçta oluşturulan tek bir oda, tek odalı bir oyun oluşturur. Bir kapı açıldığında oyun yeni bir oda oluşturmalı: en yeni odanın kapısını aç ve arkasında yeni bir oda olsun.

Bu, birbirine ihtiyaç duyan iki işlev demektir: setupDoor, addRoom'u çağırır ve addRoom, setupDoor'u çağırır. Kodun kullanabilmesi için yerel bir değişken önceden tanımlanmalıdır; bu nedenle addRoom önce tanımlanır, daha sonra yazılır:

local addRoom -- burada bildirildi, aşağıda tanımlandı

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

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

Sayı Settings.RoomsToEscape değerine (10) ulaştığında, oda yeşil kapısı olan Exit şablonudur. Şimdilik diğer odalar gibi açılır; 4. bölüm onu çıkış yolu hâline getirecek.

challenge icon

Görev

Orta

Açtığın her kapının arkasında yeni bir oda oluştur.

  1. local addRoom ifadesini setupDoor ifadesinin üstünde tanımla ve aşağıda function addRoom() olarak yaz. Sonundaki addRoom() çağrısını kaldır.
  2. setupDoor içinde, kapıyı açmadan önce: door.Parent == lastRoom ise addRoom() çağrısını yap.
  3. addRoom içinde, count >= Settings.RoomsToEscape olduğunda "Exit" şablonunu kullan.

“Oyna” düğmesine bas ve üç kapıyı aç: her birinin arkasında yeni bir oda seni bekliyor. Ardından “Kontrol et” düğmesine bas.

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

-- Bir oyuncu kapıyı açtığında kapının yaptıkları
local function setupDoor(door)
	door.Panel.Prompt.Triggered:Connect(function(player)
		if door:GetAttribute("Open") then
			return
		end
		-- Ders 5: Birbiri Ardına buraya gelecek
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

-- En yeni odanın çıkışında yeni bir oda
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()

-- Her oyuncu: her yaşamda 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)

Roblox Oyunu: Karanlıktan Kaçış bölümündeki tüm dersler

Kendi başına pratik yap: Roblox playground