Menu
CoddyTech

Oda Numaraları

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

Bir oyuncu ne kadar derinde olduğunu bilmelidir. Her odanın bir numarası vardır: öznitelik olarak Number ve kapısının üzerindeki tabelada (Sign.SurfaceGui.Number).

Her odanın girişinin bir adım içinde görünmez bir Entry parçası vardır. Bir oyuncunun karakteri bu parçaya dokunduğunda, o oda liderlik tablosunda oyuncunun Room değeri ve kontrol noktası olur: oyuncunun RespawnLocation değeri, geri döneceği SpawnLocation'dır ve her odada bir tane, Checkpoint bulunur.

player.RespawnLocation = room.Checkpoint

Players:GetPlayerFromCharacter(hit.Parent), hangi oyuncunun karakterinin ona dokunduğunu söyler; yoksa nil döndürür.

challenge icon

Görev

Orta

Odalara numara verin ve onları kontrol noktaları hâline getirin.

  1. Her oyuncuya leaderstats ve bir IntValue Room verin.
  2. addRoom içinde Number özniteliğini count olarak ayarlayın ve room.Sign.SurfaceGui.Number.Text değerini "Room " .. count olarak ayarlayın.
  3. Lobi ve her yeni oda için çağrılan setupEntry(room) işlevini yazın: room.Entry nesnesine dokunulması, oyuncunun Room değerini odanın Number değerine, RespawnLocation değerini ise room.Checkpoint olarak ayarlar.

“Oyna” düğmesine basın ve 1. odaya girin: tabelasında ve Room değerinizde 1 yazar. Ardından “Kontrol et” 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 biraz ışı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

local addRoom -- aşağıda yazılı: bir kapı bir oda ekler ve bir odanın kapısı vardır

-- Bir oyuncu kapıyı açtığında ne olur
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)

-- Ders 6: Oda Numaraları buraya gelecek

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

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

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

Kendi başına pratik yap: Roblox playground