Modelli di stanze
Lezione 4 di 25 del corso Gioco Roblox: Fuga dal buio di Coddy.
Dietro la porta della lobby non c'è ancora nulla. Le stanze sono modelli in ServerStorage.Rooms, ognuna un Model con una parte invisibile Entrance (la sua PrimaryPart, quindi è il pivot del modello) e una parte Exit dove si trova la sua porta.
Posizionare una stanza dopo un'altra richiede una sola riga: posiziona il pivot della nuova stanza, il suo ingresso, sull'uscita della vecchia stanza:
local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)Quale modello viene dopo è indicato in Settings.Order, un elenco di nomi. Anche la porta di una nuova stanza ha bisogno di setupDoor.
Sfida
MedioMetti una stanza dietro la porta della lobby.
- Aggiungi le variabili locali
rooms = workspace.Rooms,lastRoom = rooms.Lobby,count = 0. - Scrivi
addRoom(): aggiungi 1 acount, clonaServerStorage.Rooms[Settings.Order[(count - 1) % #Settings.Order + 1]], spostala inlastRoom.Exit.CFrame. - Imposta
roomscome genitore, assegna un valore alastRoom, chiamasetupDoor(room.Door)e restituisci la stanza. ChiamaaddRoom()per ultima.
Premi «Gioca» e apri la porta della lobby: dietro ti aspetta un corridoio. Poi premi «Verifica».
Provalo tu
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)
-- Cala la notte: niente sole, un po' di luce ovunque e nebbia
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")
-- Fai ruotare una porta sui cardini per aprirla
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
-- Cosa fa una porta quando un giocatore la apre
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)
-- Lezione 4: qui vanno i modelli delle stanze
-- Ogni giocatore: una torcia a ogni vita
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)
Tutte le lezioni di Gioco Roblox: Fuga dal buio
Esercitati da solo: Playground Roblox