Menu
CoddyTech

Porte a battente

Lezione 3 di 20 del corso Gioco Roblox: Fuga dall’oscurità di Coddy.

La porta della lobby ha un ProximityPrompt: quando è vicino, il giocatore vede «E Apri» (un tocco sul telefono) e, premendolo, attiva Triggered del prompt con il giocatore.

Una porta ruota attorno alla cerniera, non al centro. Il modello della porta ha una parte invisibile Hinge sul bordo. La posizione del pannello, misurata dalla cerniera, è hinge.CFrame:ToObjectSpace(panel.CFrame); ruota la cerniera di un quarto di giro e applica di nuovo quella posizione, e avrai la porta aperta:

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

Un tween fa oscillare la porta invece di farla scattare. Una volta aperta, l'attributo Open della porta viene impostato e il suo prompt disattivato.

challenge icon

Sfida

Facile
  1. Ottieni TweenService. Scrivi openDoor(door): imposta l'attributo Open della porta, disattiva door.Panel.Prompt e fai ruotare il pannello fino a un quarto di giro sul cardine (0.6 secondi).
  2. Scrivi setupDoor(door): quando viene attivato il prompt del pannello, apri la porta a meno che non sia già aperta.
  3. Configura workspace.Rooms.Lobby.Door.

Premi Play, cammina fino alla porta e premi E. Poi Check.

Provalo tu

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
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")

-- Ogni giocatore: una torcia a ogni nuova 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à