Menu
CoddyTech

Modelos de sala

Lição 4 de 20 do curso Jogo de Roblox: Fuja da Escuridão da Coddy.

Atrás da porta do saguão ainda não há nada. Os cômodos são modelos em ServerStorage.Rooms, cada um sendo um Model com uma peça Entrance invisível (seu PrimaryPart, portanto, o pivô do modelo) e uma peça Exit, onde fica sua porta.

Colocar um cômodo depois de outro exige uma linha: posicione o pivô do novo cômodo, sua entrada, na saída do cômodo anterior:

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

Qual modelo vem a seguir está em Settings.Order, uma lista de nomes. A porta de um novo cômodo também precisa de setupDoor.

challenge icon

Desafio

Médio
  1. Adicione local rooms = workspace.Rooms, local lastRoom = rooms.Lobby e local count = 0.
  2. Escreva addRoom() abaixo de setupDoor: incremente count em 1, clone o modelo chamado Settings.Order[count], posicione-o em lastRoom.Exit, defina rooms como seu pai, torne-o lastRoom, configure sua porta e retorne-o.
  3. Chame addRoom() uma vez no final do script.

Pressione Play e abra a porta do saguão. Em seguida, Check.

Experimente você mesmo

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)

-- A noite cai: sem sol, um pouco de luz por toda parte e neblina
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")

-- Abra uma porta girando-a pela dobradiç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

-- O que uma porta faz quando um jogador a 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)

-- Todos os jogadores: uma lanterna a 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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo de Roblox: Fuja da Escuridão