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.CheckpointPlayers:GetPlayerFromCharacter(hit.Parent) gibt an, wessen Körper es berührt hat, oder nil.
Aufgabe
Mittel- Gib jedem Spieler
Roomauf der Bestenliste (einen Folder namens leaderstats mit einem IntValue). - Setze in
addRoomdas AttributNumberdes Raums aufcountund den Text seines Schilds auf"Room " .. count(Room 1für den ersten Raum). - Schreibe
setupEntry(room): Wenn ein Spieler denEntryberü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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.