← Lahat ng gabay
Gabay 4

Gawin ang una mong tower defense

Naglalakad ang mga kalaban sa daan papunta sa base mo, at pinapana ng tower ang pinakamalapit.

Libre60 minuto · Baguhan · Roblox Studio
1
Hakbang 1 / 8

I-set up ang place

  1. Buksan ang Roblox Studio, i-click ang New Experience at piliin ang template na Baseplate.
  2. Sa Explorer, ilagay ang mouse sa Workspace, i-click ang + at magdagdag ng Folder. Pangalanan itong Path.
  3. Magdagdag ng pangalawang Folder sa Workspace at pangalanan itong Enemies. Iwanan itong walang laman. Lalabas ang mga kalaban dito habang nilalaro ang laro.

Higit pang detalye

  • Nasa listahan ng mga template sa start screen ang template na Baseplate.
  • Kapag kinlick mo ang +, i-type ang salitang Folder para mabilis itong mahanap. Palitan ang pangalan ng folder gamit ang F2.
  • Dapat eksaktong Path at Enemies ang mga pangalan, na may malaking unang letra. Hinahanap ng mga script ang mga pangalang ito.
  • Sa Mac, gamitin ang Cmd key tuwing sinasabi ng gabay na ito ang Ctrl.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

2
Hakbang 2 / 8

Gawin ang daan

  1. Magdagdag ng Part. Itakda ang Size sa 6, 1, 6, i-on ang Anchored at i-drag ito sa folder na Path. Pangalanan itong 1.
  2. I-duplicate ito gamit ang Ctrl+D at ilipat ang kopya nang mga 30 studs ang layo. Pangalanan itong 2.
  3. Ulitin hanggang magkaroon ka ng 5 part na may pangalang 1, 2, 3, 4 at 5. Ilagay ang mga ito para may ilang liko ang ruta.
  4. Pupunta ang mga kalaban mula 1 papuntang 2 papuntang 3 at iba pa, sa tuwid na linya sa pagitan ng bawat magkapares.

Higit pang detalye

  • Para ilagay ang part sa folder, i-drag ang pangalan nito sa Explorer papunta sa pangalang Path.
  • Ang kopyang ginawa gamit ang Ctrl+D ay nasa loob na ng folder na Path. Ilipat mo lang ito at palitan ang pangalan.
  • Mga numero lang ang pangalan: 1, 2, 3, 4, 5. Walang letra at walang espasyo.
  • Hayaang nakahiga sa sahig ang mga part. Lumulutang ang mga kalaban nang 2 studs sa ibabaw nito.
Karaniwang pagkakamali. Paglaktaw ng numero. Kung wala ang part 3, titigil ang mga kalaban sa part 2 at magpapakita ng error ang script.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

3
Hakbang 3 / 8

Gawin ang kalaban

  1. Magdagdag ng Part. Itakda ang Shape sa Ball at ang Size sa 3, 3, 3, at gawin itong pula. I-on ang Anchored, i-off ang CanCollide at pangalanan itong Enemy.
  2. Ilagay ang mouse sa Enemy, i-click ang + at magdagdag ng IntValue. Pangalanan itong Health at itakda ang Value nito sa 3.
  3. I-drag ang Enemy sa ServerStorage. Isa na itong template. Gagawa ng mga kopya nito ang laro.

Higit pang detalye

  • Ang Shape ay isang listahan sa Properties. I-click ito at piliin ang Ball.
  • Ang CanCollide ay isang checkbox sa Properties. Kapag walang tsek, nakakadaan ang mga manlalaro at ibang part sa enemy.
  • Kapag kinlick mo ang +, i-type ang IntValue para mahanap ito. I-click ang bagong IntValue, saka palitan ang Name ng Health at ang Value ng 3 sa Properties.
  • Pagkatapos mong i-drag ang Enemy sa ServerStorage, nawawala ito sa Viewport. Tama iyon.
Tip. Naka-Anchored ang kalaban dahil script ang nagpapagalaw dito. Hindi pinapansin ng mga anchored na part ang gravity at mga tulak.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

4
Hakbang 4 / 8

Gawin ang base

  1. Magdagdag ng malaking Part sa dulo ng daan, sa tabi ng part 5. I-on ang Anchored at pangalanan itong Base.
  2. Ilagay ang mouse sa Base, i-click ang + at magdagdag ng IntValue. Pangalanan itong Health at itakda ang Value nito sa 10.
  3. Magdagdag ng BillboardGui sa Base na may Size na {0, 200}, {0, 50} at StudsOffset na 0, 8, 0. Magdagdag ng TextLabel dito na may Size na {1, 0}, {1, 0} at naka-on ang TextScaled.
  4. Magdagdag ng Script sa Base at i-paste ang code na ito.
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()

Ano ang ginagawa ng bawat bahagi

  • Ang Changed ay tumatakbo tuwing nagbabago ang value ng Health.
  • Isinusulat ng function na update ang bagong numero sa label sa itaas ng base.
  • Kapag umabot sa 0 ang Health, ipinapakita ng label ang Game over at humihinto ang script na Waves sa pagpapadala ng mga kalaban.

Higit pang detalye

  • Maganda ang Size na 10, 10, 10 para sa base. Puwede ang kahit anong kulay.
  • Ang Health ng base ay ibang bagay sa Health ng enemy. Bawat isa ay nasa loob ng sarili nitong part.
  • Para sa Size at StudsOffset, i-type ang mga numero nang eksakto ayon sa nakasulat, kasama ang mga bracket at kuwit, at pindutin ang Enter.
  • Para subukan: pindutin ang F5. Ipinapakita ng label sa ibabaw ng base ang Base: 10.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

5
Hakbang 5 / 8

Ipadala ang mga wave

  1. Ilagay ang mouse sa ServerScriptService, i-click ang + at magdagdag ng Script. Pangalanan itong Waves.
  2. Burahin ang linyang nandoon na at i-paste ang code na ito.
  3. Pindutin ang Play. Tuwing 3 segundo, may lalabas na pulang bola sa part 1 at gagalaw sa daan. Kapag umabot ito sa dulo, mababawasan ng 1 health ang base.
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

Ano ang ginagawa ng bawat bahagi

  • Ang Clone ay gumagawa ng kopya ng template na Enemy mula sa ServerStorage.
  • Inililipat ng function na walk ang kalaban sa bawat part ng daan nang sunud-sunod. Pinapanatili ng distance / SPEED na pareho ang bilis sa mahaba at maikling bahagi.
  • Hinahayaan ng task.spawn na maglakad nang mag-isa ang bawat kalaban, kaya nakakapagpadala pa ng bago ang loop.

Higit pang detalye

  • Bumubukas ang script sa bagong tab. Mag-click sa loob ng code, pindutin ang Ctrl+A at saka Ctrl+V para palitan ang lahat.
  • Lumilitaw ang mga enemy sa loob ng folder na Enemies habang tumatakbo ang laro. Mapapanood mo sila sa Explorer.
  • Kung wala pang tower, lahat ng enemy ay aabot sa base. Pagkatapos ng 10 enemy, ipapakita ng label ang Game over at wala nang darating na enemy.
  • Ang pulang text tungkol sa nawawalang pangalan sa Output ay nangangahulugang mali ang pangalan ng isang bahagi ng path o ng isang folder.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

6
Hakbang 6 / 8

Gawin ang tower

  1. Magdagdag ng Part malapit sa liko ng daan. Itakda ang Size sa 4, 8, 4, i-on ang Anchored at pangalanan itong Tower.
  2. Magdagdag ng Script sa Tower at i-paste ang code na ito.
  3. Pindutin ang Play. Isang beses bawat segundo, tinatamaan ng tower ang pinakamalapit na kalaban sa saklaw. Kumikislap na puti ang kalaban, at pagkatapos ng 3 tama, nawawala ito.
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

Ano ang ginagawa ng bawat bahagi

  • Sinusukat ng loop ang layo ng tower sa bawat kalaban at inaalala ang pinakamalapit.
  • Ang RANGE ay kung hanggang saan ang abot ng tower. Ang DAMAGE ay kung gaano karaming health ang kinukuha ng isang tama.
  • Kapag umabot sa 0 ang Health, inaalis ng Destroy ang kalaban.

Higit pang detalye

  • Ilagay ang tower nang 8 hanggang 12 studs mula sa path. Ang range ay 25 studs sa lahat ng direksyon.
  • Isang tower ay 3 segundo bawat enemy, at may bagong enemy tuwing 3 segundo. Kaya mapipigilan lang ng isang tower ang path kung sapat ang tagal ng mga enemy sa range.
  • Ang puting kislap ay tumatagal nang isang ikasampung bahagi ng segundo. Tingnang mabuti para makita ito.
  • Para sa pangalawang tower, piliin ang Tower at pindutin ang Ctrl+D, saka ilipat ang kopya. Kasama ang script.
Tip. Pinakamahusay ang tower sa tabi ng liko, dahil mas matagal na nasa saklaw ang mga kalaban doon.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

7
Hakbang 7 / 8

Subukan at i-balanse

  1. Pindutin ang F5 at panoorin ang ilang wave.
  2. Kung walang kalabang umaabot sa base, masyadong madali ang laro. Kung mabilis maubos ang health ng base, masyadong mahirap.
  3. I-balanse ito gamit ang tatlong numero: ang oras ng paghihintay sa Waves, ang halaga ng Health ng kalaban at ang DAMAGE ng tower.
  4. Pindutin ang Shift+F5 para huminto. Kung may pumalya, buksan ang window na Output mula sa menu na Window at basahin ang pulang text.

Higit pang detalye

  • Isang numero lang ang baguhin sa bawat pagkakataon, saka maglaro ulit. Kung hindi, hindi mo malalaman kung aling pagbabago ang nakatulong.
  • Ang oras ng paghihintay ay ang numero sa task.wait(3) malapit sa dulo ng script na Waves. Mas mabilis magpadala ng mga enemy ang mas maliit na numero.
  • Nasa ServerStorage ang Health ng enemy, sa loob ng Enemy. Nasa itaas ng script na Tower ang DAMAGE ng tower.
  • Magandang unang layunin: dapat makaligtas ang base nang dalawang minuto na may dalawang tower.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

8
Hakbang 8 / 8

I-publish ito

  1. Piliin ang File → Publish to Roblox. Bigyan ng pangalan at maikling paglalarawan ang laro.
  2. Sa website ng Creator Hub, buksan ang laro mo at sagutan ang talatanungan ng Maturity.
  3. Itakda ang laro sa Public at ipadala ang link sa kaibigan.

Higit pang detalye

  • Sa unang beses na magpa-publish ka, hihingi ang Studio ng pangalan at deskripsyon. I-click ang Create.
  • Ang Creator Hub ay ang website na create.roblox.com. Mag-sign in gamit ang parehong account at i-click ang laro mo sa listahan.
  • Maaaring humingi pa ang Roblox bago maging public ang laro, halimbawa ay age check sa account. Sasabihin ng pahina kung ano ang kulang.
  • Kung wala ka pang 18, gawin ang hakbang na ito kasama ang magulang mo.
Tip. Ipakita ang laro sa kaibigan at magtanong ng isa: masyado bang madali o mahirap? Pagkatapos, baguhin ang isang numero at subukan ulit.
Hindi gumagana sa akin ang hakbang na ito

Tingnan muna ang tatlong ito

  • Eksaktong kapareho ng nasa gabay ang pangalan ng bawat part at script, pati ang malalaking letra.
  • Nasa tamang bagay ang script. Tingnan ang label sa itaas ng code box.
  • Buksan ang Output window mula sa menu na Window. Ipinapakita ng pulang text ang script at ang linyang may problema.

Nahihirapan pa rin? Sumulat sa amin →

Ngayon, ikaw naman ang magbago

  • Magdagdag ng pangalawang tower na maikli ang saklaw at may DAMAGE na 2.
  • Gawing palakas nang palakas ang bilis ng mga wave. Pahiwatig: ilagay sa variable ang oras ng paghihintay at paliitin ito nang kaunti pagkatapos ng bawat kalaban.
  • Bigyan ng 20 health ang base at gawing 2 ang kinukuha ng bawat kalaban.