Menu
CoddyTech

Puertas que giran

Lección 3 de 20 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.

challenge icon

Desafío

Fácil
  1. Obtén TweenService. Escribe openDoor(door): establece el atributo Open de la puerta, desactiva door.Panel.Prompt y anima el panel hasta completar un cuarto de giro en la bisagra (0.6 segundos).
  2. Escribe setupDoor(door): cuando se active el indicador del panel, abre la puerta a menos que ya esté abierta.
  3. Configura workspace.Rooms.Lobby.Door.

Pulsa Play, camina hasta la puerta y pulsa E. Después, Check.

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: sin sol, 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")

-- 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)
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Roblox: Escapa de la oscuridad