Schwingende Türen
Lektion 3 von 20 im Kurs Roblox-Spiel: Entkomme der Dunkelheit von Coddy.
Die Tür der Lobby hat einen ProximityPrompt: Wenn sich der Spieler in ihrer Nähe befindet, sieht er „E Öffnen“ (eine Berührung auf einem Smartphone), und wenn er die Taste drückt, wird das Ereignis Triggered des Prompts mit dem Spieler ausgelöst.
Eine Tür dreht sich um ihr Scharnier, nicht um ihre Mitte. Das Türmodell hat an seiner Kante ein unsichtbares Teil namens Hinge. Die Position des Türblatts, vom Scharnier aus gemessen, ist hinge.CFrame:ToObjectSpace(panel.CFrame); drehe das Scharnier um eine Vierteldrehung und setze diese Position wieder darauf, und schon hast du die geöffnete Tür:
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()Ein Tween lässt die Tür aufschwingen, anstatt sie springen zu lassen. Sobald die Tür geöffnet ist, wird ihr Attribut Open gesetzt und ihr Prompt deaktiviert.
Aufgabe
Einfach- Rufe TweenService ab. Schreibe
openDoor(door): Setze das AttributOpender Tür, schaltedoor.Panel.Promptaus und tween das Panel um eine Vierteldrehung am Scharnier (0.6 Sekunden). - Schreibe
setupDoor(door): Wenn der Prompt des Panels ausgelöst wird, öffne die Tür, sofern sie nicht bereits offen ist. - Richte
workspace.Rooms.Lobby.Doorein.
Drücke Play, gehe zur Tür und drücke E. Klicke dann auf Check.
Probier es selbst
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)
-- Die Nacht bricht herein: keine Sonne, überall ein wenig Licht und Nebel
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")
-- Jeder Spieler: eine Taschenlampe für jedes Leben
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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.