← Összes útmutató
4. útmutató

Építsd meg az első tower defense játékodat

Az ellenségek egy ösvényen sétálnak a bázisod felé, és egy torony a legközelebbire lő.

Ingyenes60 perc · Kezdő · Roblox Studio
1
Lépés 1 / 8

Készítsd elő a pályát

  1. Nyisd meg a Roblox Studio-t, kattints a New Experience gombra, és válaszd a Baseplate sablont.
  2. Az Explorer-ben vidd az egeret a Workspace fölé, kattints a + gombra, és adj hozzá egy Folder-t. Nevezd el Path-nak.
  3. Adj hozzá egy második Folder-t a Workspace-hez, és nevezd el Enemies-nek. Hagyd üresen. Az ellenségek a játék közben jelennek meg benne.

További részletek

  • A Baseplate sablon a kezdőképernyő sablonlistájában van.
  • Amikor a + gombra kattintasz, írd be, hogy Folder, hogy gyorsan megtaláld. A Folder-t az F2-vel nevezheted át.
  • A neveknek pontosan Path és Enemies kell lenniük, nagy kezdőbetűvel. A szkriptek ezeket a neveket keresik.
  • Mac-en használd a Cmd billentyűt minden alkalommal, amikor az útmutató Ctrl-t mond.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

2
Lépés 2 / 8

Építsd meg az ösvényt

  1. Adj hozzá egy Part-ot. Állítsd a Size értékét 6, 1, 6-ra, kapcsold be az Anchored-et, és húzd a Path mappába. Nevezd el 1-nek.
  2. Másold a Ctrl+D billentyűkkel, és told a másolatot kb. 30 studdal arrébb. Nevezd el 2-nek.
  3. Ismételd, amíg nem lesz 5 Part-od 1, 2, 3, 4 és 5 néven. Úgy helyezd el őket, hogy az útvonalon legyen néhány kanyar.
  4. Az ellenségek az 1-től a 2-be, aztán a 3-ba mennek, és így tovább, minden pár között egyenes vonalban.

További részletek

  • Ha egy Part-ot a Folder-be akarsz tenni, húzd a nevét az Explorer-ben a Path névre.
  • A Ctrl+D-vel készített másolat már a Path Folder-ben van. Csak el kell mozdítanod és át kell neveznöd.
  • A nevek csak a számok: 1, 2, 3, 4, 5. Betűk és szóközök nélkül.
  • Hagyd a részeket a padlón fekve. Az ellenségek 2 studs magasan lebegnek fölöttük.
Gyakori hiba. Kihagysz egy számot. Ha a 3-as Part hiányzik, az ellenségek a 2-esnél megállnak, és a szkript hibát jelez.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

3
Lépés 3 / 8

Hozd létre az ellenséget

  1. Adj hozzá egy Part-ot. Állítsd a Shape értékét Ball-ra, a Size értékét 3, 3, 3-ra, és legyen piros. Kapcsold be az Anchored-et, kapcsold ki a CanCollide-ot, és nevezd el Enemy-nek.
  2. Vidd az egeret az Enemy fölé, kattints a + gombra, és adj hozzá egy IntValue-t. Nevezd el Health-nek, és állítsd a Value értékét 3-ra.
  3. Húzd az Enemy-t a ServerStorage-be. Ez most egy sablon. A játék másolatokat fog készíteni belőle.

További részletek

  • A Shape egy lista a Properties panelen. Kattints rá, és válaszd a Ball-t.
  • A CanCollide egy jelölőnégyzet a Properties panelen. Pipa nélkül a játékosok és más Part-ok átmennek az ellenségen.
  • Amikor a + gombra kattintasz, írd be, hogy IntValue, hogy megtaláld. Kattints az új IntValue-ra, aztán a Properties panelen változtasd a Name értékét Health-re, a Value értékét 3-ra.
  • Miután az Enemy-t a ServerStorage-ba húzod, eltűnik a Viewport-ból. Ez rendben van.
Tipp. Az ellenség azért Anchored, mert egy szkript mozgatja. A rögzített Part-ok nem veszik figyelembe a gravitációt és a tolást.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

4
Lépés 4 / 8

Építsd meg a bázist

  1. Adj hozzá egy nagy Part-ot az ösvény végén, az 5-ös Part mellett. Kapcsold be az Anchored-et, és nevezd el Base-nek.
  2. Vidd az egeret a Base fölé, kattints a + gombra, és adj hozzá egy IntValue-t. Nevezd el Health-nek, és állítsd a Value értékét 10-re.
  3. Adj hozzá egy BillboardGui-t a Base-hez, a Size értéke {0, 200}, {0, 50}, a StudsOffset értéke 0, 8, 0. Adj hozzá egy TextLabel-t, a Size értéke {1, 0}, {1, 0}, és a TextScaled legyen bekapcsolva.
  4. Adj hozzá egy Script-et a Base-hez, és illeszd be ezt a kódot.
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()

Mit csinál az egyes rész

  • A Changed minden alkalommal lefut, amikor a Health érték megváltozik.
  • Az update függvény az új számot ráírja a bázis fölötti feliratra.
  • Amikor a Health eléri a 0-t, a felirat a Game over szöveget mutatja, és a Waves szkript nem küld több ellenséget.

További részletek

  • A 10, 10, 10 méret jó alap. Bármilyen szín megfelel.
  • A bázis Health-je más objektum, mint az ellenség Health-je. Mindegyik a saját Part-jában van.
  • A Size és a StudsOffset esetén írd be a számokat pontosan úgy, ahogy látod, a zárójelekkel és a vesszőkkel együtt, és nyomd meg az Enter-t.
  • A teszteléshez nyomd meg az F5-öt. A bázis fölötti felirat ezt mutatja: Base: 10.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

5
Lépés 5 / 8

Küldd el a hullámokat

  1. Vidd az egeret a ServerScriptService fölé, kattints a + gombra, és adj hozzá egy Script-et. Nevezd el Waves-nek.
  2. Töröld ki a már ott lévő sort, és illeszd be ezt a kódot.
  3. Nyomd meg a Play gombot. 3 másodpercenként megjelenik egy piros golyó az 1-es Part-nál, és végigmegy az ösvényen. Amikor eléri a végét, a bázis 1 életerőt veszít.
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

Mit csinál az egyes rész

  • A Clone másolatot készít az Enemy sablonról a ServerStorage-ből.
  • A walk függvény sorban mozgatja az ellenséget az ösvény minden Part-jához. A distance / SPEED miatt a sebesség hosszú és rövid szakaszokon is ugyanaz marad.
  • A task.spawn miatt minden ellenség a maga útján megy, így a ciklus folyamatosan küldhet újakat.

További részletek

  • A szkript új lapon nyílik meg. Kattints a kódba, nyomd meg a Ctrl+A-t, majd a Ctrl+V-t, hogy mindent lecserélj.
  • Az ellenségek az Enemies Folder-ben jelennek meg, amíg a játék fut. Az Explorer-ben nézheted őket.
  • Torony nélkül minden ellenség eléri a bázist. 10 ellenség után a felirat ezt mutatja: Game over, és több ellenség nem jön.
  • Ha az Output ablakban piros szöveg szól egy hiányzó névről, akkor egy útvonal-Part vagy egy Folder neve rossz.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

6
Lépés 6 / 8

Építsd meg a tornyot

  1. Adj hozzá egy Part-ot az ösvény egyik kanyarjához közel. Állítsd a Size értékét 4, 8, 4-re, kapcsold be az Anchored-et, és nevezd el Tower-nek.
  2. Adj hozzá egy Script-et a Tower-hez, és illeszd be ezt a kódot.
  3. Nyomd meg a Play gombot. A torony másodpercenként egyszer eltalálja a hatótávolságon belüli legközelebbi ellenséget. Az ellenség fehéren felvillan, és 3 találat után eltűnik.
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

Mit csinál az egyes rész

  • A ciklus megméri a távolságot a toronytól minden ellenségig, és megjegyzi a legközelebbit.
  • A RANGE azt adja meg, milyen messzire ér el a torony. A DAMAGE azt, mennyi életerőt vesz el egy találat.
  • Amikor a Health eléri a 0-t, a Destroy eltávolítja az ellenséget.

További részletek

  • Tedd a tornyot 8-12 stud-ra az úttól. A hatótávolság minden irányban 25 stud.
  • Egy toronynak 3 másodperc kell egy ellenséghez, és 3 másodpercenként érkezik új ellenség. Egy torony tehát csak akkor tarthatja az utat, ha az ellenségek elég sokáig maradnak a hatótávolságban.
  • A fehér villanás egy tizedmásodpercig tart. Nézd figyelmesen, hogy lásd.
  • Egy második toronyhoz jelöld ki a Tower-t, nyomd meg a Ctrl+D-t, aztán told el a másolatot. A szkript vele együtt jön.
Tipp. A torony egy kanyar mellett működik a legjobban, mert ott az ellenségek tovább maradnak hatótávolságon belül.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

7
Lépés 7 / 8

Teszteld és egyensúlyozd ki

  1. Nyomd meg az F5 billentyűt, és nézz meg néhány hullámot.
  2. Ha egyetlen ellenség sem ér el a bázisig, a játék túl könnyű. Ha a bázis gyorsan elveszíti az összes életerejét, túl nehéz.
  3. Három számmal egyensúlyozhatod ki: a várakozási idővel a Waves-ben, az ellenség Health értékével és a torony DAMAGE értékével.
  4. A leállításhoz nyomd meg a Shift+F5 billentyűket. Ha valami nem sikerül, nyisd meg az Output ablakot a Window menüből, és olvasd el a piros szöveget.

További részletek

  • Egyszerre csak egy számot változtass, aztán játssz újra. Különben nem tudod, melyik változtatás segített.
  • A várakozási idő a task.wait(3) száma a Waves szkript vége felé. Kisebb szám gyorsabban küldi az ellenségeket.
  • Az ellenség Health-je a ServerStorage-ban, az Enemy-ben van. A torony DAMAGE értéke a Tower szkript tetején található.
  • Egy jó első cél: a bázis kibírjon két percet két toronnyal.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

8
Lépés 8 / 8

Add ki

  1. Válaszd a File → Publish to Roblox parancsot. Adj a játéknak egy nevet és egy rövid leírást.
  2. A Creator Hub weboldalon nyisd meg a játékodat, és töltsd ki a Maturity kérdőívet.
  3. Állítsd a játékot Public-ra, és küldd el a linket egy barátodnak.

További részletek

  • Amikor először teszed közzé, a Studio nevet és leírást kér. Kattints a Create gombra.
  • A Creator Hub a create.roblox.com weboldal. Jelentkezz be ugyanazzal a fiókkal, és kattints a játékodra a listában.
  • A Roblox többet is kérhet, mielőtt egy játék nyilvános lehet, például a fiók életkor-ellenőrzését. Az oldal megmondja, mi hiányzik.
  • Ha 18 évesnél fiatalabb vagy, ezt a lépést egy szülővel együtt csináld.
Tipp. Mutasd meg a játékot egy barátodnak, és tedd fel neki egy kérdést: túl könnyű volt, vagy túl nehéz? Aztán változtass meg egy számot, és próbáld ki újra.
Ez a lépés nem megy nekem

Először ezt a három dolgot ellenőrizd

  • Minden Part és szkript neve pontosan olyan, mint az útmutatóban, ugyanazokkal a nagybetűkkel.
  • A szkript a megfelelő objektumban van. Nézd meg a kódmező feletti feliratot.
  • Nyisd meg az Output ablakot a Window menüből. A piros szöveg megmutatja a szkriptet és a hibás sort.

Még mindig elakadtál? Írj nekünk →

Most írd át magad

  • Adj hozzá egy második tornyot rövid hatótávolsággal és 2-es DAMAGE értékkel.
  • Tedd a hullámokat idővel gyorsabbá. Segítség: tartsd a várakozási időt egy változóban, és minden ellenség után csökkentsd egy kicsit.
  • Adj a bázisnak 20 életerőt, és minden ellenség vegyen el 2-t.