Zıplama Platformları
Coddy'nin Roblox Oyunu: Sonsuz Kule kursunda ders 9 / 18.
Bounce aşamasında Bounce etiketi taşıyan yeşil bir ped, üzerine zıplanamayacak kadar yüksek bir çıkıntının altında bulunur. Pedin üzerine indiğinde seni yukarı, çıkıntının üzerine fırlatması gerekir.
Bir karakter, ortasındaki görünmez parça olan HumanoidRootPart ile hareket eder. Bu parçanın AssemblyLinearVelocity değerini ayarlarsan karakter o yönde uçar, ardından yer çekimi onu aşağı çeker:
root.AssemblyLinearVelocity = Vector3.new(0, 60, 0) -- Saniyede 60 stud, tam yukarı doğruTouched sana pede çarpan uzvu verir; bu genellikle bir bacaktır. Uzvun üst öğesi, HumanoidRootPart'ı içeren karakterdir.
Görev
Ortabounce(hit)fonksiyonunu yaz: dokunanın modelindeHumanoidRootPartvarsa,AssemblyLinearVelocitydeğeriniVector3.new(0, Settings.BouncePower, 0)olarak ayarla.setupStageiçinde,Bounceetiketi taşıyan her parçanın Touched olayını bu fonksiyona bağla.
Oyna'ya bas, pedin üzerine in ve çıkıntıya doğru yönel. Ardından Kontrol Et.
Kendin dene
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local CollectionService = game:GetService("CollectionService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local Settings = require(game.ReplicatedStorage.Settings)
local stages = ServerStorage.Stages
local tower = nil
print("Each tower has " .. Settings.StageCount .. " stages")
-- Her oyuncu liderlik tablosunda Wins değerine sahip olur
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)
-- Kill etiketi taşıyan her şey bir canı sona erdirir
local function killOnTouch(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
-- Kaybolan bir basamak, üzerine biri bastıktan kısa süre sonra görünmez olur, ardından geri gelir
local function makeVanish(part)
part.Touched:Connect(function(hit)
if part:GetAttribute("Gone") or not hit.Parent:FindFirstChild("Humanoid") then
return
end
part:SetAttribute("Gone", true)
task.wait(Settings.VanishDelay)
part.Transparency = 0.8
part.CanCollide = false
task.wait(Settings.VanishTime)
part.Transparency = 0
part.CanCollide = true
part:SetAttribute("Gone", nil)
end)
end
-- Bir lazer, Slide ofsetine doğru kayıp geri döner; bunu sürekli tekrarlar
local function makeSlide(part)
local info = TweenInfo.new(Settings.SlideTime, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, -1, true)
local goal = { Position = part.Position + part:GetAttribute("Slide") }
TweenService:Create(part, info, goal):Play()
end
-- Spinner'lar her karede biraz döner
RunService.Heartbeat:Connect(function(dt)
for _, spinner in CollectionService:GetTagged("Spinner") do
if spinner:IsDescendantOf(workspace) then
spinner:PivotTo(spinner:GetPivot() * CFrame.Angles(0, math.rad(Settings.SpinSpeed) * dt, 0))
end
end
end)
-- Bir aşamadaki tüm engelleri etiketlerine göre etkinleştir
local function setupStage(stage)
for _, part in stage:GetDescendants() do
if part:HasTag("Kill") then
part.Touched:Connect(killOnTouch)
end
if part:HasTag("Vanish") then
makeVanish(part)
end
if part:HasTag("Conveyor") then
part.AssemblyLinearVelocity = part.CFrame.LookVector * Settings.BeltSpeed
end
if part:HasTag("Slider") then
makeSlide(part)
end
end
end
-- Rastgele bir aşama
local function pickStage()
local all = stages:GetChildren()
return all[math.random(1, #all)]
end
-- Bir modelin kopyasını kulenin tepesine yerleştir; kopyayı ve yeni tepe yüksekliğini 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 yeni bir rastgele kule oluştur
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
setupStage(stage)
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.