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")) --> trueTag 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
endUntuk 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.
Tantangan
Mudah- Tulis
killOnTouch(hit): jika model pemain yang menyentuh memiliki Humanoid, atur Health-nya ke 0. - Tulis
setupStage(stage): untuk setiap part dalamstage:GetDescendants()yang diberi tagKill, hubungkanTouched-nya kekillOnTouch. - Di dalam
buildTower, panggilsetupStage(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()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Game Roblox: Menara Tanpa Akhir
4Jadikan Ini Sebuah Permainan
Tahap di Papan PeringkatLatihan sendiri: Playground Roblox