Menu
CoddyTech

Förderbänder

Lektion 7 von 18 im Kurs Roblox-Spiel: Endloser Turm von Coddy.

Die Förderband-Stufe hat ein dunkles Band mit dem Tag Conveyor, das dich zurück in die Richtung schiebt, aus der du gekommen bist. Ein verankertes Teil bewegt sich nie, aber wenn du ihm eine AssemblyLinearVelocity gibst, wird alles, was darauf steht, mitgetragen – wie auf einem echten Förderband.

In welche Richtung? Jedes Teil hat eine Vorderseite, und part.CFrame.LookVector ist ein Vector3, der eine Stud lang ist und aus ihr herauszeigt. Das Band wurde so gedreht, dass seine Vorderseite zurück den Gehweg hinunter zeigt:

part.AssemblyLinearVelocity = part.CFrame.LookVector * Settings.BeltSpeed

Wenn die eigene Richtung des Teils verwendet wird, kann ein Ersteller das Band in eine beliebige Richtung drehen, und es funktioniert trotzdem – ohne dass das Skript geändert werden muss.

challenge icon

Aufgabe

Mittel

Gib in setupStage jedem mit Conveyor markierten Teil eine AssemblyLinearVelocity, die dem CFrame.LookVector multipliziert mit Settings.BeltSpeed entspricht.

Drücke auf Play und laufe gegen das Förderband. Klicke dann auf Check.

Probier es selbst

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local CollectionService = game:GetService("CollectionService")
local RunService = game:GetService("RunService")
local Settings = require(game.ReplicatedStorage.Settings)

local stages = ServerStorage.Stages
local tower = nil

print("Each tower has " .. Settings.StageCount .. " stages")

-- Jeder Spieler erhält Wins auf der Bestenliste
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)

-- Alles mit dem Tag Kill beendet ein Leben
local function killOnTouch(hit)
	local humanoid = hit.Parent:FindFirstChild("Humanoid")
	if humanoid then
		humanoid.Health = 0
	end
end

-- Eine verschwindende Stufe wird kurz nach dem Betreten unsichtbar und erscheint dann wieder
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

-- Spinners drehen sich in jedem Frame ein Stück
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)

-- Aktiviere jedes Hindernis in einer Stufe anhand seiner Tags
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
	end
end

-- Wähle eine beliebige Stufe aus
local function pickStage()
	local all = stages:GetChildren()
	return all[math.random(1, #all)]
end

-- Setze eine Kopie eines Modells auf den Turm; gibt die Kopie und die neue Oberkante zurück
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

-- Baue von unten nach oben einen neuen, zufälligen Turm
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()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Roblox-Spiel: Endloser Turm