Menu
CoddyTech

Oda Numaraları

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

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
  1. Liderlik tablosunda her oyuncuya Room verin (bir leaderstats Folder ve bir IntValue).
  2. addRoom içinde, odanın Number özniteliğini count olarak ve tabelasını "Room " .. count olarak ayarlayın (ilk oda için Room 1).
  3. setupEntry(room) fonksiyonunu yazın: oyuncu odanın Entry öğesine dokunduğunda, Room değerini odanın numarasına, RespawnLocation değerini ise odanın Checkpoint değerine ayarlayın. Bu fonksiyonu Lobby ve oluşturulan her yeni oda için çağırın.

Play'e, ardından Check'e 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 ışı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 tanımlandı: bir kapı bir oda ekler ve bir odanın kapısı vardır

-- 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
		if door.Parent == lastRoom then
			addRoom()
		end
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

-- 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 oyuncu: her can için 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