Menu
CoddyTech

Balok Pembunuh

Pelajaran 4 dari 18 dalam kursus Game Roblox: Menara Tanpa Akhir di Coddy.

Setiap obby memiliki bagian merah yang tidak boleh kamu sentuh. Di setiap stage, bagian itu ditandai dengan tag, yaitu label yang bisa kamu pasang pada instance apa pun. Pita merah memiliki tag Kill:

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

Tag membuat game besar tetap sederhana: pembuat stage hanya perlu memberi tag pada sebuah bagian, lalu satu fungsi membuat setiap bagian yang diberi tag berfungsi. Stage di menaramu adalah salinan, jadi atur semuanya setelah dibuat. GetDescendants mencantumkan setiap bagian di dalam stage, sedalam apa pun letaknya:

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

Untuk mengakhiri satu nyawa, atur Health Humanoid menjadi 0. Sentuhan bisa berasal dari apa pun, jadi periksa terlebih dahulu apakah model penyentuh memiliki Humanoid. Dalam pelajaran ini, setiap stage berisi KillBricks, jadi kamu bisa mencobanya.

challenge icon

Tantangan

Mudah
  1. Tulis killOnTouch(hit): jika model pemain yang menyentuh memiliki Humanoid, atur Health-nya ke 0.
  2. Tulis setupStage(stage): untuk setiap part dalam stage:GetDescendants() yang diberi tag Kill, hubungkan Touched-nya ke killOnTouch.
  3. Di dalam buildTower, panggil setupStage(stage) untuk setiap stage yang kamu tumpuk.

Tekan Play dan lompatlah melewati jalur merah. Lalu tekan Check.

Coba sendiri

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

-- Setiap pemain mendapat Wins di papan peringkat
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)

-- Pilih stage secara acak
local function pickStage()
	local all = stages:GetChildren()
	return all[math.random(1, #all)]
end

-- Letakkan salinan model di puncak menara; kembalikan salinan dan ketinggian puncak yang baru
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

-- Bangun menara baru secara acak dari bawah ke atas
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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Game Roblox: Menara Tanpa Akhir

Latihan sendiri: Playground Roblox