Menu
CoddyTech

Birbiri Ardına

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

Başlangıçta bir oda oluşturulması, tek odalı bir oyun ortaya çıkarır. Oyun, bir kapı açıldığında oda oluşturmalıdır: en yeni odanın kapısını açın; arkasında yeni bir oda olsun.

Bu, birbirine ihtiyaç duyan iki işlev ortaya çıkarır: setupDoor, addRoom işlevini çağırır ve addRoom, setupDoor işlevini çağırır. Bir yerel değişken, kod onu kullanmadan önce tanımlanmalıdır; bu nedenle addRoom önce tanımlanır, sonra yazılır:

local addRoom -- burada bildirildi, aşağıda yazıldı

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

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

Sayı Settings.RoomsToEscape değerine ulaştığında, oda Exit şablonudur: çıkış yolu.

challenge icon

Görev

Orta
  1. local addRoom öğesini setupDoor öğesinin üstünde bildirin ve function addRoom() olarak yazın.
  2. setupDoor içinde, kapıyı açmadan önce: kapı lastRoom öğesine aitse bir oda ekleyin.
  3. addRoom içinde, count değeri Settings.RoomsToEscape değerine ulaştığında Exit şablonunu kullanın.
  4. Sondaki addRoom() çağrısını kaldırın.

Bu dersin dünyasında çıkış yolu kısa (3 oda). Play düğmesine, ardından Check düğmesine 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 aydınlı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ığı şey
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)

-- 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 oyuncuya her yaşamında 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)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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