Menu
CoddyTech

Öldürücü Bloklar

Coddy'nin Roblox Oyunu: Sonsuz Kule kursunda ders 4 / 18.

Her obby'de dokunmamanız gereken kırmızı parçalar vardır. Aşamalarda bunlar, herhangi bir örneğe ekleyebileceğiniz bir etiket olan tag ile işaretlenir. Kırmızı şeritlerde Kill etiketi bulunur:

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

Etiketler, büyük oyunları basit tutmanın yoludur: aşamayı oluşturan kişi yalnızca bir parçaya etiket ekler ve tek bir işlev, etiket eklenmiş tüm parçaların çalışmasını sağlar. Kulenizin aşamaları kopyalardır, bu yüzden onları oluşturduktan sonra ayarlayın. GetDescendants, bir aşamanın içindeki her parçayı, ne kadar derinde olursa olsun listeler:

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

Bir canı bitirmek için Humanoid'in Health değerini 0 olarak ayarlayın. Dokunma herhangi bir şeyden gelebilir, bu yüzden önce dokunanın modelinde bir Humanoid olup olmadığını kontrol edin. Bu derste her aşama KillBricks'tir, bu yüzden deneyebilirsiniz.

challenge icon

Görev

Kolay
  1. Şunu yaz: killOnTouch(hit): dokunanın modelinde bir Humanoid varsa, Health değerini 0 olarak ayarla.
  2. Şunu yaz: setupStage(stage): stage:GetDescendants() içindeki Kill etiketi taşıyan her parça için, Touched olayını killOnTouch işlevine bağla.
  3. buildTower içinde, üst üste dizdiğin her aşama için setupStage(stage) çağrısını yap.

Play düğmesine bas ve kırmızı şeritlerin üzerinden atla. Ardından Check düğmesine bas.

Kendin dene

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")

-- Her oyuncuya liderlik tablosunda Wins verilir
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)

-- Rastgele bir aşama
local function pickStage()
	local all = stages:GetChildren()
	return all[math.random(1, #all)]
end

-- Bir modelin kopyasını kulenin üstüne yerleştirir; kopyayı ve yeni üst noktayı döndürür
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

-- Aşağıdan yukarıya doğru rastgele yeni bir kule inşa eder
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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Roblox Oyunu: Sonsuz Kule bölümündeki tüm dersler