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.
Sfida
FacileFai aprire la porta della hall facendola ruotare.
- Ottieni TweenService. Scrivi
openDoor(door): imposta il suo attributoOpensu true e disattivadoor.Panel.Prompt. - Poi anima
door.Panelper 0.6 secondi fino algoaldel corpo, un quarto di giro positivo:math.rad(90). - Scrivi
setupDoor(door):door.Panel.Prompt.Triggeredapre la porta, a meno che non sia già aperta. Chiamala perworkspace.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