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.
Desafio
Médio- Adicione
local rooms = workspace.Rooms,local lastRoom = rooms.Lobbyelocal count = 0. - Escreva
addRoom()abaixo desetupDoor: incrementecountem 1, clone o modelo chamadoSettings.Order[count], posicione-o emlastRoom.Exit, definaroomscomo seu pai, torne-olastRoom, configure sua porta e retorne-o. - 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)
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.