Menu
CoddyTech

Raumnummern

Lektion 6 von 20 im Kurs Roblox-Spiel: Entkomme der Dunkelheit von Coddy.

Ein Spieler sollte wissen, wie tief er sich befindet. Jeder Raum erhält seine Nummer: als Attribut Number und auf dem Schild über seiner Tür (Sign.SurfaceGui.Number).

Jeder Raum hat ein unsichtbares Entry-Teil, einen Schritt hinter seinem Eingang. Wenn der Körper eines Spielers es berührt, wird dieser Raum zu seinem Room auf der Bestenliste und zu seinem Kontrollpunkt: Die RespawnLocation eines Spielers ist der SpawnLocation, an dem er wieder erscheint, und jeder Raum hat einen, Checkpoint.

player.RespawnLocation = room.Checkpoint

Players:GetPlayerFromCharacter(hit.Parent) gibt an, wessen Körper es berührt hat, oder nil.

challenge icon

Aufgabe

Mittel
  1. Gib jedem Spieler Room auf der Bestenliste (einen Folder namens leaderstats mit einem IntValue).
  2. Setze in addRoom das Attribut Number des Raums auf count und den Text seines Schilds auf "Room " .. count (Room 1 für den ersten Raum).
  3. Schreibe setupEntry(room): Wenn ein Spieler den Entry berührt, setze seinen Room auf die Nummer des Raums und seine RespawnLocation auf dessen Checkpoint. Rufe die Funktion für die Lobby und für jeden neuen Raum auf.

Drücke Spielen und dann Prüfen.

Probier es selbst

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 -- der neueste Raum
local count = 0 -- bisher erstellte Räume

-- Die Nacht bricht herein: keine Sonne, überall ein wenig Licht und Nebel
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")

-- Eine Tür an ihrem Scharnier aufschwingen lassen
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 -- weiter unten definiert: Eine Tür fügt einen Raum hinzu, und ein Raum hat eine Tür

-- Was eine Tür tut, wenn ein Spieler sie öffnet
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)

-- Ein neuer Raum am Ausgang des neuesten Raums
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

-- Jeder Spieler: eine Taschenlampe für jedes Leben
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Roblox-Spiel: Entkomme der Dunkelheit