Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Metti una stanza dietro la porta della lobby.

  1. Aggiungi le variabili locali rooms = workspace.Rooms, lastRoom = rooms.Lobby, count = 0.
  2. Scrivi addRoom(): aggiungi 1 a count, clona ServerStorage.Rooms[Settings.Order[(count - 1) % #Settings.Order + 1]], spostala in lastRoom.Exit.CFrame.
  3. Imposta rooms come genitore, assegna un valore a lastRoom, chiama setupDoor(room.Door) e restituisci la stanza. Chiama addRoom() 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