Menu
CoddyTech
flag Ar iconالعربيةdown icon

الكتل القاتلة

الدرس 4 من 18 في دورة لعبة Roblox: البرج اللانهائي على Coddy.

في كل لعبة عوائق أجزاء حمراء يجب ألا تلمسها. في المراحل، تُميَّز بوسم وسم، وهو تسمية يمكنك وضعها على أي كائن. تحمل الشرائط الحمراء الوسم Kill:

print(part:HasTag("Kill")) --> true

الأوسمة هي ما يجعل الألعاب الكبيرة بسيطة: منشئ المرحلة يضع وسمًا على جزء فقط، ودالة واحدة تجعل كل جزء موسوم يعمل. مراحل برجك نسخ، لذا أعدّها بعد إنشائها. تعرض GetDescendants كل جزء داخل المرحلة، مهما كان عمقه:

for _, part in stage:GetDescendants() do
	if part:HasTag("Kill") then
		part.Touched:Connect(killOnTouch)
	end
end

لإنهاء حياة، عيّن Health الخاص بـ Humanoid إلى 0. قد تأتي اللمسة من أي شيء، لذا تحقق أولًا من أن نموذج الجسم الملامس يحتوي على Humanoid. في هذا الدرس، كل مرحلة تتكون من KillBricks، لذا يمكنك تجربة ذلك.

challenge icon

التحدي

سهل
  1. اكتب killOnTouch(hit): إذا كان نموذج الكائن الذي لمس الجزء يحتوي على Humanoid، فاضبط Health الخاص به على 0.
  2. اكتب setupStage(stage): لكل جزء في stage:GetDescendants() يحمل الوسم Kill، اربط Touched الخاص به بـ killOnTouch.
  3. في buildTower، استدعِ setupStage(stage) لكل مرحلة تكدّسها.

اضغط على 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 pickStage()
	local all = stages:GetChildren()
	return all[math.random(1, #all)]
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

-- ابنِ برجًا عشوائيًا جديدًا من الأسفل إلى الأعلى
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(pickStage(), top)
		top = newTop
	end
	stack(ServerStorage.Finish, top)
end

buildTower()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس لعبة Roblox: البرج اللانهائي