Menu
CoddyTech

Modelli di stanza

Lezione 4 di 20 del corso Gioco Roblox: Fuga dall’oscurità 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
  1. Aggiungi local rooms = workspace.Rooms, local lastRoom = rooms.Lobby e local count = 0.
  2. Scrivi addRoom() sotto setupDoor: aggiungi 1 a count, clona il modello chiamato Settings.Order[count], spostalo sopra lastRoom.Exit, assegnagli come genitore rooms, rendilo lastRoom, configura la sua porta e restituiscilo.
  3. Chiama addRoom() una volta alla fine dello script.

Premi Play e apri la porta della hall. Poi premi Check.

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")

-- Apri una porta facendola ruotare sui cardini
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)

-- 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)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Roblox: Fuga dall’oscurità