قوالب الغرف
الدرس 4 من 20 في دورة لعبة Roblox: اهرب من الظلام على Coddy.
خلف باب الردهة لا يوجد شيء بعد. الغرف هي قوالب في ServerStorage.Rooms، وكل منها عبارة عن Model يحتوي على جزء Entrance غير مرئي (وهو PrimaryPart، لذا فهو محور النموذج) وجزء Exit حيث يوجد بابه.
وضع غرفة بعد أخرى يتم بسطر واحد: ضع محور الغرفة الجديدة، أي مدخلها، عند مخرج الغرفة القديمة:
local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)القالب الذي يأتي بعد ذلك موجود في Settings.Order، وهي قائمة أسماء. ويحتاج باب الغرفة الجديدة أيضًا إلى setupDoor.
التحدي
متوسط- أضِف
local rooms = workspace.Roomsوlocal lastRoom = rooms.Lobbyوlocal count = 0. - اكتب
addRoom()أسفلsetupDoor: أضِف 1 إلىcount، واستنسخ القالب المسمىSettings.Order[count]، وحرّكه إلىlastRoom.Exit، واجعله تابعًا لـrooms، واجعلهlastRoom، وأعدّ بابه، ثم أعده. - استدعِ
addRoom()مرة واحدة في نهاية البرنامج النصي.
اضغط على Play وافتح باب الردهة. ثم اضغط على Check.
جرّب بنفسك
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
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")
-- افتح الباب بتدويره حول مفصلته
local function openDoor(door)
door:SetAttribute("Open", true)
door.Panel.Prompt.Enabled = false
local hinge, panel = door.Hinge, door.Panel
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()
end
-- ما يفعله الباب عندما يفتحه لاعب
local function setupDoor(door)
door.Panel.Prompt.Triggered:Connect(function(player)
if door:GetAttribute("Open") then
return
end
openDoor(door)
end)
end
setupDoor(workspace.Rooms.Lobby.Door)
-- كل لاعب: مصباح يدوي في كل حياة
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)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.