أبواب تتأرجح
الدرس 3 من 20 في دورة لعبة Roblox: اهرب من الظلام على Coddy.
لباب الردهة ProximityPrompt: عندما يقترب منه اللاعب، يرى «E فتح» (نقرة على الهاتف)، والضغط عليه يطلق حدث Triggered الخاص بالموجه مع اللاعب.
يدور الباب حول مفصله، لا حول منتصفه. يحتوي نموذج الباب على جزء Hinge غير مرئي عند حافته. موضع اللوح، مقاسًا من المفصل، هو hinge.CFrame:ToObjectSpace(panel.CFrame)؛ أدر المفصل ربع دورة وأعد وضع اللوح وفقًا لذلك، فيصبح الباب مفتوحًا:
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()يجعل التحريك الباب يتأرجح بدلًا من أن يقفز. بعد فتحه، تُضبط سمة Open الخاصة بالباب، ويُعطَّل الموجه.
التحدي
سهل- احصل على TweenService. اكتب
openDoor(door): عيّن السمةOpenللباب، وأوقفdoor.Panel.Prompt، واجعل اللوحة تدور حول المفصلة ربع دورة (0.6 ثانية). - اكتب
setupDoor(door): عند تشغيل المطالبة الخاصة باللوحة، افتح الباب ما لم يكن مفتوحًا بالفعل. - أعِدّ
workspace.Rooms.Lobby.Door.
اضغط Play، وامشِ إلى الباب واضغط E. ثم اضغط Check.
جرّب بنفسك
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local Settings = require(game.ReplicatedStorage.Settings)
-- يحلّ الليل: لا شمس، وقليل من الضوء في كل مكان، وضباب
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")
-- كل لاعب: مصباح يدوي في كل حياة
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)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.