Menu
CoddyTech

Porte a battente

Lezione 3 di 25 del corso Gioco Roblox: Fuga dal buio 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

Fai aprire la porta della hall facendola ruotare.

  1. Ottieni TweenService. Scrivi openDoor(door): imposta il suo attributo Open su true e disattiva door.Panel.Prompt.
  2. Poi anima door.Panel per 0.6 secondi fino al goal del corpo, un quarto di giro positivo: math.rad(90).
  3. Scrivi setupDoor(door): door.Panel.Prompt.Triggered apre la porta, a meno che non sia già aperta. Chiamala per workspace.Rooms.Lobby.Door.

Premi «Gioca» e premi E davanti alla porta: si apre ruotando nella direzione opposta a te. Poi premi «Verifica».

Provalo tu

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)

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

-- Lezione 3: qui va Doors That Swing

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

Tutte le lezioni di Gioco Roblox: Fuga dal buio

Esercitati da solo: Playground Roblox