Menu
CoddyTech

Einer nach dem anderen

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

Ein Raum, der zu Beginn erstellt wird, ergibt ein Spiel mit einem Raum. Das Spiel sollte einen Raum erstellen, wenn sich eine Tür öffnet: Öffne die Tür des neuesten Raums, und dahinter befindet sich ein neuer Raum.

Das ergibt zwei Funktionen, die einander benötigen: setupDoor ruft addRoom auf, und addRoom ruft setupDoor auf. Eine lokale Variable muss deklariert werden, bevor der Code sie verwenden kann. Deshalb wird addRoom zuerst deklariert und später geschrieben:

local addRoom -- hier deklariert, weiter unten definiert

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

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

Wenn die Anzahl Settings.RoomsToEscape erreicht, ist der Raum die Vorlage Exit: der Weg nach draußen.

challenge icon

Aufgabe

Mittel
  1. Deklariere local addRoom oberhalb von setupDoor und schreibe es als function addRoom().
  2. Füge in setupDoor vor dem Öffnen einen Raum hinzu, wenn die Tür zu lastRoom gehört.
  3. Verwende in addRoom die Vorlage Exit, sobald count Settings.RoomsToEscape erreicht.
  4. Entferne den Aufruf addRoom() am Ende.

Die Welt in dieser Lektion hat einen kurzen Weg nach draußen (3 Räume). Drücke Spielen und dann Überprü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 etwas 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 um ihr 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

-- 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
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

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

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