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.
Sfida
Facile- Ottieni TweenService. Scrivi
openDoor(door): imposta l'attributoOpendella porta, disattivadoor.Panel.Prompte fai ruotare il pannello fino a un quarto di giro sul cardine (0.6 secondi). - Scrivi
setupDoor(door): quando viene attivato il prompt del pannello, apri la porta a meno che non sia già aperta. - 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)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.