Ö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")) --> trueEtiketler, 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
endBir 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.
Görev
Kolay- Şunu yaz:
killOnTouch(hit): dokunanın modelinde bir Humanoid varsa, Health değerini 0 olarak ayarla. - Şunu yaz:
setupStage(stage):stage:GetDescendants()içindekiKilletiketi taşıyan her parça için,TouchedolayınıkillOnTouchişlevine bağla. buildToweriçinde, üst üste dizdiğin her aşama içinsetupStage(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()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.