← Alle Anleitungen
Anleitung 4

Baue dein erstes Tower Defense

Gegner laufen auf einem Weg zu deiner Basis, und ein Turm schießt auf den nächsten.

Kostenlos60 Minuten · Anfänger · Roblox Studio
1
Schritt 1 / 8

Die Welt einrichten

  1. Öffne Roblox Studio, klicke auf New Experience und wähle die Vorlage Baseplate.
  2. Fahre in Explorer mit der Maus über Workspace, klicke auf + und füge einen Folder hinzu. Nenne ihn Path.
  3. Füge Workspace einen zweiten Folder hinzu und nenne ihn Enemies. Lass ihn leer. Die Gegner erscheinen während des Spiels darin.

Mehr Details

  • Die Vorlage Baseplate steht in der Liste der Vorlagen auf dem Startbildschirm.
  • Wenn du auf + klickst, tippe das Wort Folder, um ihn schnell zu finden. Benenne einen Ordner mit F2 um.
  • Die Namen müssen genau Path und Enemies sein, mit großem Anfangsbuchstaben. Die Scripts suchen nach diesen Namen.
  • Auf einem Mac nimmst du die Taste Cmd, immer wenn die Anleitung Ctrl sagt.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

2
Schritt 2 / 8

Den Weg bauen

  1. Füge ein Part hinzu. Stelle Size auf 6, 1, 6, schalte Anchored ein und ziehe es in den Folder Path. Nenne es 1.
  2. Dupliziere es mit Ctrl+D und schiebe die Kopie etwa 30 studs weiter. Nenne sie 2.
  3. Wiederhole das, bis du 5 Parts mit den Namen 1, 2, 3, 4 und 5 hast. Platziere sie so, dass die Strecke ein paar Kurven hat.
  4. Die Gegner laufen von 1 zu 2 zu 3 und so weiter, zwischen je zwei Parts geradeaus.

Mehr Details

  • Um ein Part in den Ordner zu legen, ziehe seinen Namen in Explorer auf den Namen Path.
  • Eine Kopie, die du mit Ctrl+D gemacht hast, liegt schon im Ordner Path. Du musst sie nur verschieben und umbenennen.
  • Die Namen sind nur die Zahlen: 1, 2, 3, 4, 5. Keine Buchstaben und keine Leerzeichen.
  • Lass die Teile auf dem Boden liegen. Gegner schweben 2 studs darüber.
Häufiger Fehler. Eine Zahl auslassen. Wenn Part 3 fehlt, bleiben die Gegner bei Part 2 stehen und das Script zeigt einen Fehler.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

3
Schritt 3 / 8

Den Gegner erstellen

  1. Füge ein Part hinzu. Stelle Shape auf Ball und Size auf 3, 3, 3 und mach es rot. Schalte Anchored ein, schalte CanCollide aus und nenne es Enemy.
  2. Fahre mit der Maus über Enemy, klicke auf + und füge einen IntValue hinzu. Nenne ihn Health und stelle seinen Value auf 3.
  3. Ziehe Enemy nach ServerStorage. Jetzt ist es eine Vorlage. Das Spiel macht Kopien davon.

Mehr Details

  • Shape ist eine Liste in Properties. Klicke darauf und wähle Ball.
  • CanCollide ist ein Kästchen in Properties. Ohne Haken gehen Spieler und andere Parts durch den Gegner hindurch.
  • Wenn du auf + klickst, tippe IntValue, um es zu finden. Klicke auf das neue IntValue und ändere in Properties Name auf Health und Value auf 3.
  • Nachdem du Enemy in ServerStorage gezogen hast, ist er aus dem Viewport verschwunden. Das ist richtig.
Tipp. Der Gegner hat Anchored, weil ein Script ihn bewegt. Parts mit Anchored ignorieren Schwerkraft und Stöße.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

4
Schritt 4 / 8

Die Basis bauen

  1. Füge am Ende des Weges neben Part 5 ein großes Part hinzu. Schalte Anchored ein und nenne es Base.
  2. Fahre mit der Maus über Base, klicke auf + und füge einen IntValue hinzu. Nenne ihn Health und stelle seinen Value auf 10.
  3. Füge Base ein BillboardGui mit der Size {0, 200}, {0, 50} und dem StudsOffset 0, 8, 0 hinzu. Füge darin ein TextLabel mit der Size {1, 0}, {1, 0} und eingeschaltetem TextScaled hinzu.
  4. Füge Base ein Script hinzu und füge diesen Code ein.
Base > Script
local base = script.Parent
local health = base.Health
local label = base.BillboardGui.TextLabel

local function update()
	if health.Value > 0 then
		label.Text = "Base: " .. health.Value
	else
		label.Text = "Game over"
	end
end

health.Changed:Connect(update)
update()

Was jeder Teil macht

  • Changed läuft jedes Mal, wenn sich der Wert Health ändert.
  • Die Funktion update schreibt die neue Zahl auf die Beschriftung über der Basis.
  • Wenn Health 0 erreicht, zeigt die Beschriftung Game over und das Skript Waves schickt keine Gegner mehr.

Mehr Details

  • Eine Größe von 10, 10, 10 ist eine gute Basis. Jede Farbe passt.
  • Das Health der Basis ist ein anderes Objekt als das Health des Gegners. Jedes liegt in seinem eigenen Part.
  • Bei Size und StudsOffset tippst du die Zahlen genau wie gezeigt, mit den Klammern und Kommas, und drückst Enter.
  • Zum Testen: Drücke F5. Das Schild über der Basis zeigt Base: 10.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

5
Schritt 5 / 8

Die Wellen losschicken

  1. Fahre mit der Maus über ServerScriptService, klicke auf + und füge ein Script hinzu. Nenne es Waves.
  2. Lösche die Zeile, die schon da ist, und füge diesen Code ein.
  3. Drücke Play. Alle 3 Sekunden erscheint bei Part 1 ein roter Ball und bewegt sich den Weg entlang. Wenn er das Ende erreicht, verliert die Basis 1 Lebenspunkt.
ServerScriptService > Waves
local TweenService = game:GetService("TweenService")
local ServerStorage = game:GetService("ServerStorage")

local path = workspace:WaitForChild("Path")
local enemies = workspace:WaitForChild("Enemies")
local base = workspace:WaitForChild("Base")
local SPEED = 8

local function walk(enemy)
	for i = 2, #path:GetChildren() do
		local target = path[tostring(i)].Position + Vector3.new(0, 2, 0)
		local distance = (target - enemy.Position).Magnitude
		local info = TweenInfo.new(distance / SPEED, Enum.EasingStyle.Linear)
		local tween = TweenService:Create(enemy, info, {Position = target})
		tween:Play()
		tween.Completed:Wait()
		if not enemy.Parent then return end
	end

	base.Health.Value = math.max(0, base.Health.Value - 1)
	enemy:Destroy()
end

while base.Health.Value > 0 do
	task.wait(3)

	local enemy = ServerStorage.Enemy:Clone()
	enemy.Position = path["1"].Position + Vector3.new(0, 2, 0)
	enemy.Parent = enemies
	task.spawn(walk, enemy)
end

Was jeder Teil macht

  • Clone macht eine Kopie der Vorlage Enemy aus ServerStorage.
  • Die Funktion walk bewegt den Gegner der Reihe nach zu jedem Teil des Weges. distance / SPEED hält das Tempo auf langen und kurzen Strecken gleich.
  • task.spawn lässt jeden Gegner für sich laufen, damit die Schleife weiter neue losschicken kann.

Mehr Details

  • Das Script öffnet sich in einem neuen Tab. Klicke in den Code, drücke Ctrl+A und dann Ctrl+V, um alles zu ersetzen.
  • Gegner erscheinen im Ordner Enemies, solange das Spiel läuft. Du kannst ihnen in Explorer zusehen.
  • Ohne Turm kommt jeder Gegner bei der Basis an. Nach 10 Gegnern zeigt das Schild Game over, und es kommen keine Gegner mehr.
  • Roter Text in Output über einen fehlenden Namen bedeutet, dass ein Wegstück oder ein Ordner den falschen Namen hat.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

6
Schritt 6 / 8

Den Turm bauen

  1. Füge nahe einer Kurve im Weg ein Part hinzu. Stelle Size auf 4, 8, 4, schalte Anchored ein und nenne es Tower.
  2. Füge Tower ein Script hinzu und füge diesen Code ein.
  3. Drücke Play. Einmal pro Sekunde trifft der Turm den nächsten Gegner in Reichweite. Der Gegner blitzt weiß auf und verschwindet nach 3 Treffern.
Tower > Script
local tower = script.Parent
local enemies = workspace:WaitForChild("Enemies")
local RANGE = 25
local DAMAGE = 1

while true do
	task.wait(1)

	local target = nil
	local closest = RANGE
	for _, enemy in ipairs(enemies:GetChildren()) do
		local distance = (enemy.Position - tower.Position).Magnitude
		if distance < closest then
			target = enemy
			closest = distance
		end
	end

	if target then
		target.Health.Value -= DAMAGE
		if target.Health.Value <= 0 then
			target:Destroy()
		else
			target.Color = Color3.new(1, 1, 1)
			task.wait(0.1)
			target.Color = Color3.fromRGB(255, 60, 60)
		end
	end
end

Was jeder Teil macht

  • Die Schleife misst die Entfernung vom Turm zu jedem Gegner und merkt sich den nächsten.
  • RANGE ist, wie weit der Turm reicht. DAMAGE ist, wie viel Health ein Treffer abzieht.
  • Wenn Health 0 erreicht, entfernt Destroy den Gegner.

Mehr Details

  • Stelle den Turm 8 bis 12 studs vom Weg weg. Die Reichweite ist 25 studs in jede Richtung.
  • Ein Turm braucht 3 Sekunden für einen Gegner, und alle 3 Sekunden kommt ein neuer Gegner. Ein Turm kann den Weg also nur halten, wenn die Gegner lange genug in Reichweite bleiben.
  • Der weiße Blitz dauert eine Zehntelsekunde. Schau genau hin, um ihn zu sehen.
  • Für einen zweiten Turm wählst du Tower aus und drückst Ctrl+D. Verschiebe dann die Kopie. Das Script kommt mit.
Tipp. Ein Turm funktioniert am besten neben einer Kurve, weil die Gegner dort länger in Reichweite bleiben.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

7
Schritt 7 / 8

Testen und ausbalancieren

  1. Drücke F5 und sieh dir ein paar Wellen an.
  2. Wenn nie ein Gegner die Basis erreicht, ist das Spiel zu leicht. Wenn die Basis schnell alle Lebenspunkte verliert, ist es zu schwer.
  3. Du balancierst es mit drei Zahlen: der Wartezeit in Waves, dem Wert Health des Gegners und dem DAMAGE des Turms.
  4. Drücke Shift+F5 zum Beenden. Wenn etwas nicht klappt, öffne das Fenster Output im Menü Window und lies den roten Text.

Mehr Details

  • Ändere immer nur eine Zahl und spiele dann noch einmal. Sonst weißt du nicht, welche Änderung geholfen hat.
  • Die Wartezeit ist die Zahl in task.wait(3) gegen Ende des Scripts Waves. Eine kleinere Zahl schickt die Gegner schneller.
  • Das Health des Gegners steht in ServerStorage, in Enemy. Der DAMAGE des Turms steht oben im Script Tower.
  • Ein gutes erstes Ziel: Die Basis soll mit zwei Türmen zwei Minuten überleben.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

8
Schritt 8 / 8

Veröffentlichen

  1. Wähle File → Publish to Roblox. Gib dem Spiel einen Namen und eine kurze Beschreibung.
  2. Öffne auf der Website Creator Hub dein Spiel und fülle den Fragebogen Maturity aus.
  3. Stelle das Spiel auf Public und schick den Link an einen Freund.

Mehr Details

  • Beim ersten Veröffentlichen fragt Studio nach einem Namen und einer Beschreibung. Klicke auf Create.
  • Creator Hub ist die Website create.roblox.com. Melde dich mit demselben Konto an und klicke in der Liste auf dein Spiel.
  • Roblox verlangt vielleicht noch mehr, bevor ein Spiel öffentlich sein darf, zum Beispiel eine Altersprüfung für das Konto. Die Seite sagt dir, was fehlt.
  • Wenn du unter 18 bist, mach diesen Schritt zusammen mit einem Elternteil.
Tipp. Zeig das Spiel einem Freund und stelle eine Frage: War es zu leicht oder zu schwer? Ändere dann eine Zahl und teste noch einmal.
Dieser Schritt klappt bei mir nicht

Prüfe zuerst diese drei Dinge

  • Der Name jedes Parts und jedes Scripts ist genau wie in der Anleitung, mit denselben Großbuchstaben.
  • Das Script liegt im richtigen Objekt. Schau auf die Beschriftung über dem Codekasten.
  • Öffne das Fenster Output über das Menü Window. Roter Text zeigt dir das Script und die Zeile mit dem Problem.

Immer noch Probleme? Schreib uns →

Jetzt änderst du es selbst

  • Füge einen zweiten Turm mit kurzer Reichweite und DAMAGE 2 hinzu.
  • Lass die Wellen mit der Zeit schneller werden. Tipp: Speichere die Wartezeit in einer Variablen und mach sie nach jedem Gegner ein bisschen kleiner.
  • Gib der Basis 20 Lebenspunkte und lass jeden Gegner 2 abziehen.