← Alle gidsen
Gids 4

Bouw je eerste tower defense

Vijanden lopen over een pad naar je basis en een toren schiet op de dichtstbijzijnde.

Gratis60 minuten · Beginner · Roblox Studio
1
Stap 1 / 8

Maak de plek klaar

  1. Open Roblox Studio, klik op New Experience en kies de Baseplate-template.
  2. Ga in Explorer met de muis over Workspace, klik op + en voeg een Folder toe. Noem hem Path.
  3. Voeg een tweede Folder toe aan Workspace en noem hem Enemies. Laat hem leeg. Tijdens de game verschijnen de vijanden erin.

Meer uitleg

  • De template Baseplate staat in de lijst met templates op het startscherm.
  • Als je op + klikt, typ je het woord Folder om hem snel te vinden. Geef een map met F2 een nieuwe naam.
  • De namen moeten precies Path en Enemies zijn, met een hoofdletter vooraan. De scripts zoeken naar deze namen.
  • Gebruik op een Mac de toets Cmd, elke keer als deze gids Ctrl zegt.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

2
Stap 2 / 8

Bouw het pad

  1. Voeg een Part toe. Zet Size op 6, 1, 6, zet Anchored aan en sleep hem in de map Path. Noem hem 1.
  2. Dupliceer hem met Ctrl+D en zet de kopie ongeveer 30 studs verderop. Noem hem 2.
  3. Herhaal dit tot je 5 parts hebt met de namen 1, 2, 3, 4 en 5. Zet ze zo neer dat de route een paar bochten heeft.
  4. De vijanden gaan van 1 naar 2 naar 3 enzovoort, in een rechte lijn tussen elk paar.

Meer uitleg

  • Om een part in de map te zetten sleep je de naam in Explorer naar de naam Path.
  • Een kopie die je met Ctrl+D maakt, zit al in de map Path. Je hoeft hem alleen te verplaatsen en een nieuwe naam te geven.
  • De namen zijn alleen de cijfers: 1, 2, 3, 4, 5. Geen letters en geen spaties.
  • Laat de onderdelen op de vloer liggen. Vijanden zweven 2 studs erboven.
Veelgemaakte fout. Een nummer overslaan. Als part 3 ontbreekt, stoppen de vijanden bij part 2 en geeft het script een fout.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

3
Stap 3 / 8

Maak de vijand

  1. Voeg een Part toe. Zet Shape op Ball en Size op 3, 3, 3 en maak hem rood. Zet Anchored aan, zet CanCollide uit en noem hem Enemy.
  2. Ga met de muis over Enemy, klik op + en voeg een IntValue toe. Noem hem Health en zet zijn Value op 3.
  3. Sleep Enemy naar ServerStorage. Hij is nu een sjabloon. De game maakt er kopieën van.

Meer uitleg

  • Shape is een lijst in Properties. Klik erop en kies Ball.
  • CanCollide is een vakje in Properties. Zonder vinkje lopen spelers en andere parts dwars door de vijand heen.
  • Als je op + klikt, typ je IntValue om hem te vinden. Klik op de nieuwe IntValue en verander in Properties Name in Health en Value in 3.
  • Nadat je Enemy naar ServerStorage hebt gesleept, is hij weg uit de Viewport. Dat klopt.
Tip. De vijand heeft Anchored aan omdat een script hem verplaatst. Parts met Anchored trekken zich niets aan van zwaartekracht en duwtjes.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

4
Stap 4 / 8

Bouw de basis

  1. Voeg een grote Part toe aan het eind van het pad, naast part 5. Zet Anchored aan en noem hem Base.
  2. Ga met de muis over Base, klik op + en voeg een IntValue toe. Noem hem Health en zet zijn Value op 10.
  3. Voeg een BillboardGui toe aan Base met Size {0, 200}, {0, 50} en StudsOffset 0, 8, 0. Voeg daarin een TextLabel toe met Size {1, 0}, {1, 0} en TextScaled aan.
  4. Voeg een Script toe aan Base en plak deze code.
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()

Wat elk deel doet

  • Changed draait elke keer als de waarde Health verandert.
  • De functie update schrijft het nieuwe getal op het label boven de basis.
  • Als Health 0 bereikt, laat het label Game over zien en stopt het script Waves met vijanden sturen.

Meer uitleg

  • Een grootte van 10, 10, 10 is een goed begin. Elke kleur is goed.
  • De Health van de basis is een ander object dan de Health van de vijand. Elk zit in zijn eigen part.
  • Bij Size en StudsOffset typ je de getallen precies zoals getoond, met de haakjes en komma's, en druk je op Enter.
  • Testen: druk op F5. Het label boven de basis toont Base: 10.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

5
Stap 5 / 8

Stuur de golven

  1. Ga met de muis over ServerScriptService, klik op + en voeg een Script toe. Noem het Waves.
  2. Verwijder de regel die er al staat en plak deze code.
  3. Druk op Play. Elke 3 seconden verschijnt er een rode bal bij part 1 die over het pad beweegt. Als hij het eind bereikt, verliest de basis 1 health.
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

Wat elk deel doet

  • Clone maakt een kopie van het sjabloon Enemy uit ServerStorage.
  • De functie walk verplaatst de vijand naar elke part van het pad, op volgorde. Door distance / SPEED blijft de snelheid gelijk op lange en korte stukken.
  • Met task.spawn loopt elke vijand zijn eigen weg, zodat de lus steeds nieuwe kan blijven sturen.

Meer uitleg

  • Het script opent in een nieuw tabblad. Klik in de code, druk op Ctrl+A en dan op Ctrl+V om alles te vervangen.
  • Vijanden verschijnen in de map Enemies zolang de game draait. Je kunt ze zien in Explorer.
  • Zonder toren bereikt elke vijand de basis. Na 10 vijanden toont het label Game over en komen er geen vijanden meer.
  • Rode tekst in Output over een ontbrekende naam betekent dat een stuk van het pad of een map de verkeerde naam heeft.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

6
Stap 6 / 8

Bouw de toren

  1. Voeg een Part toe bij een bocht in het pad. Zet Size op 4, 8, 4, zet Anchored aan en noem hem Tower.
  2. Voeg een Script toe aan Tower en plak deze code.
  3. Druk op Play. Elke seconde raakt de toren de dichtstbijzijnde vijand binnen bereik. De vijand flitst wit en na 3 treffers verdwijnt hij.
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

Wat elk deel doet

  • De lus meet de afstand van de toren tot elke vijand en onthoudt de dichtstbijzijnde.
  • RANGE is hoe ver de toren kan reiken. DAMAGE is hoeveel health één treffer weghaalt.
  • Als Health 0 bereikt, haalt Destroy de vijand weg.

Meer uitleg

  • Zet de toren 8 tot 12 studs van het pad vandaan. Het bereik is 25 studs in elke richting.
  • Eén toren heeft 3 seconden nodig voor één vijand, en elke 3 seconden komt er een nieuwe vijand. Eén toren kan het pad dus alleen houden als de vijanden lang genoeg binnen bereik blijven.
  • De witte flits duurt een tiende van een seconde. Kijk goed om hem te zien.
  • Voor een tweede toren selecteer je Tower en druk je op Ctrl+D. Verplaats dan de kopie. Het script gaat mee.
Tip. Een toren werkt het best naast een bocht, want daar blijven vijanden langer binnen bereik.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

7
Stap 7 / 8

Test en breng in balans

  1. Druk op F5 en kijk naar een paar golven.
  2. Als er nooit een vijand bij de basis komt, is de game te makkelijk. Verliest de basis snel al zijn health, dan is het te moeilijk.
  3. Breng het in balans met drie getallen: de wachttijd in Waves, de waarde Health van de vijand en de DAMAGE van de toren.
  4. Druk op Shift+F5 om te stoppen. Gaat er iets mis, open dan het venster Output via het menu Window en lees de rode tekst.

Meer uitleg

  • Verander steeds maar één getal en speel dan opnieuw. Anders weet je niet welke verandering hielp.
  • De wachttijd is het getal in task.wait(3) vlak voor het einde van het script Waves. Een kleiner getal stuurt vijanden sneller.
  • De Health van de vijand staat in ServerStorage, in Enemy. De DAMAGE van de toren staat bovenaan het script Tower.
  • Een goed eerste doel: de basis moet met twee torens twee minuten overleven.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

8
Stap 8 / 8

Publiceer je game

  1. Kies File → Publish to Roblox. Geef de game een naam en een korte beschrijving.
  2. Open je game op de website Creator Hub en vul de vragenlijst Maturity in.
  3. Zet de game op Public en stuur de link naar een vriend of vriendin.

Meer uitleg

  • De eerste keer dat je publiceert, vraagt Studio om een naam en een beschrijving. Klik op Create.
  • Creator Hub is de website create.roblox.com. Log in met hetzelfde account en klik in de lijst op je game.
  • Roblox vraagt misschien om meer voordat een game openbaar mag zijn, bijvoorbeeld een leeftijdscontrole van het account. De pagina vertelt wat er ontbreekt.
  • Ben je jonger dan 18? Doe deze stap dan samen met een ouder.
Tip. Laat de game aan een vriend zien en stel één vraag: was het te makkelijk of te moeilijk? Verander dan één getal en test opnieuw.
Deze stap lukt mij niet

Controleer eerst deze drie dingen

  • De naam van elke part en elk script is precies zoals in de gids, met dezelfde hoofdletters.
  • Het script zit in het juiste object. Kijk naar het label boven het codevak.
  • Open het venster Output via het menu Window. Rode tekst laat het script en de regel met het probleem zien.

Nog steeds vast? Schrijf ons →

Pas het nu zelf aan

  • Voeg een tweede toren toe met een klein bereik en DAMAGE 2.
  • Laat de golven na verloop van tijd sneller komen. Hint: bewaar de wachttijd in een variabele en maak hem na elke vijand een beetje kleiner.
  • Geef de basis 20 health en laat elke vijand er 2 weghalen.