Menu
CoddyTech

Plantillas de habitaciones

Lección 4 de 20 del curso Juego de Roblox: Escapa de la oscuridad de Coddy.

Detrás de la puerta del vestíbulo aún no hay nada. Las habitaciones son plantillas en ServerStorage.Rooms, cada una es un Model con una parte Entrance invisible (su PrimaryPart, así que es el pivote del modelo) y una parte Exit donde está su puerta.

Colocar una habitación después de otra requiere una sola línea: coloca el pivote de la nueva habitación, su entrada, en la salida de la habitación anterior:

local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)

Qué plantilla viene después está indicado en Settings.Order, una lista de nombres. La puerta de una nueva habitación también necesita setupDoor.

challenge icon

Desafío

Intermedio
  1. Añade local rooms = workspace.Rooms, local lastRoom = rooms.Lobby y local count = 0.
  2. Escribe addRoom() debajo de setupDoor: suma 1 a count, clona la plantilla llamada Settings.Order[count], colócala sobre lastRoom.Exit, asígnale rooms como padre, conviértela en lastRoom, configura su puerta y devuélvela.
  3. Llama a addRoom() una vez al final del script.

Pulsa Play y abre la puerta del vestíbulo. Después, Check.

Pruébalo tú mismo

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)

-- Cae la noche: no hay sol, hay un poco de luz por todas partes y niebla
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")

-- Abre una puerta girándola sobre su bisagra
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

-- Lo que hace una puerta cuando un jugador la abre
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)

-- Cada jugador: una linterna en cada vida
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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Roblox: Escapa de la oscuridad