Puertas que giran
Lección 3 de 25 del curso Juego de Roblox: Escapa de la oscuridad de Coddy.
La puerta del vestíbulo tiene un ProximityPrompt: cuando el jugador está cerca, ve «E Abrir» (un toque en un teléfono), y al presionarlo se activa Triggered del prompt con el jugador.
Una puerta gira sobre su bisagra, no sobre su centro. El modelo de la puerta tiene una pieza invisible Hinge en el borde. La posición del panel, medida desde la bisagra, es hinge.CFrame:ToObjectSpace(panel.CFrame); gira la bisagra un cuarto de vuelta y vuelve a colocar el panel en esa posición, y tendrás la puerta abierta:
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 hace que la puerta gire en lugar de dar un salto. Una vez abierta, se establece el atributo Open de la puerta y se desactiva su prompt.
Desafío
FácilHaz que la puerta del vestíbulo se abra girando.
- Obtén TweenService. Escribe
openDoor(door): establece su atributoOpenen true y desactivadoor.Panel.Prompt. - Después, anima
door.Paneldurante 0.6 segundos hasta elgoaldel cuerpo, un cuarto de vuelta positivo:math.rad(90). - Escribe
setupDoor(door):door.Panel.Prompt.Triggeredla abre si no está abierta. Llámala paraworkspace.Rooms.Lobby.Door.
Pulsa «Jugar» y pulsa E junto a la puerta: se abre girando hacia el lado opuesto a ti. Después, pulsa «Comprobar».
Pruébalo tú mismo
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)
-- Cae la noche: no hay sol, hay un poco de luz por todas partes y niebla
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")
-- La lección 3: Puertas que se abren girando va aquí
-- Cada jugador: una linterna en cada vida
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)
Todas las lecciones de Juego de Roblox: Escapa de la oscuridad
Practica por tu cuenta: Playground de Roblox