برج عشوائي
الدرس 3 من 18 في دورة لعبة Roblox: البرج اللانهائي على Coddy.
برج من المرحلة نفسها خمس مرات ليس ممتعًا. يحتوي ServerStorage.Stages على سبعة أنواع: الدرجات، وكتل القتل، والسير الناقل، والدرجات المتلاشية، والارتداد، والدوّار، والليزر. اختر واحدًا عشوائيًا لكل طابق:
local all = stages:GetChildren()
local stage = all[math.random(1, #all)]math.random(1, #all) هو عدد صحيح من 1 إلى عدد المراحل، لذا تتساوى فرصة اختيار كل مرحلة. معظمها لا يفعل شيئًا بعد: ستدب الحياة في دوّاراتها وأحزمتها والليزر في الفصل التالي.
يوضع فوق المرحلة الأخيرة ServerStorage.Finish، وهي منصة ذهبية تنتهي عندها رحلة التسلق. ترفع stack أي نموذج بالفعل، لذا فهي ترفع Finish أيضًا.
التحدي
سهل- اكتب
pickStage(): أرجِع عنصرًا فرعيًا عشوائيًا منstages. - في
buildTower، رصّpickStage()بدلًا منstages.Steps. - بعد الحلقة، رصّ
ServerStorage.Finishفي الأعلى.
اضغط على Play عدة مرات: سيكون كل برج مختلفًا. ثم اضغط على Check.
جرّب بنفسك
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local stages = ServerStorage.Stages
local tower = nil
print("Each tower has " .. Settings.StageCount .. " stages")
-- يحصل كل لاعب على Wins في لوحة المتصدرين
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = leaderstats
end)
-- ضع نسخة من نموذج فوق البرج؛ تُرجع النسخة والارتفاع الجديد لقمة البرج
local function stack(template, bottom)
local copy = template:Clone()
local box, size = copy:GetBoundingBox()
local lift = bottom - (box.Position.Y - size.Y / 2)
copy:PivotTo(copy:GetPivot() + Vector3.new(0, lift, 0))
copy.Parent = tower
return copy, bottom + size.Y
end
-- أنشئ برجًا من مرحلة Steps
local function buildTower()
tower = Instance.new("Model")
tower.Name = "Tower"
tower.Parent = workspace
local top = 0
for i = 1, Settings.StageCount do
local stage, newTop = stack(stages.Steps, top)
top = newTop
end
end
buildTower()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.