Menu
CoddyTech

Folge dem Weg

Lektion 2 von 18 im Kurs Roblox-Spiel: Tower Defense von Coddy.

Die Gegner laufen einen Pfad entlang, der durch unsichtbare Teile in workspace.Path.Waypoints markiert ist, benannt von 1 bis 6. GetChildren garantiert keine bestimmte Reihenfolge, sortiere sie daher zuerst nach der Zahl in ihrem Namen:

table.sort(waypoints, function(a, b)
	return tonumber(a.Name) < tonumber(b.Name)
end)

Jeder Gegner ist ein Modell in ServerStorage.Enemies: Klone es, positioniere es mit PivotTo über Wegpunkt 1 und setze workspace.Enemies als Parent.

Ein Humanoid bewegt sich mit MoveTo, und sein MoveToFinished-Ereignis wird ausgelöst, wenn er ankommt. Nach 8 Sekunden gibt er auf und wird mit false ausgelöst. Deshalb wird ein langsamer Gegner auf einem langen Abschnitt erneut losgeschickt, bis er ankommt:

repeat
	humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait()

Das Laufen dauert eine Weile, daher läuft walkPath mit task.spawn in einem eigenen Thread und das Skript wird fortgesetzt.

challenge icon

Aufgabe

Einfach
  1. Rufe ServerStorage und local enemies = workspace.Enemies ab.
  2. Lege die Wegpunkte in eine Liste und sortiere sie nach Nummer.
  3. Schreibe walkPath(enemy): Gehe die Wegpunkte von 2 bis zum letzten durch und rufe für jeden MoveTo auf, bis MoveToFinished meldet, dass er angekommen ist. Beende die Funktion, wenn der Gegner verschwunden ist (not enemy.Parent).
  4. Schreibe spawnEnemy(kind): Klone das Modell, platziere es 5 Studs über Wegpunkt 1, setze enemies als dessen Parent, starte walkPath mit task.spawn und gib es zurück.
  5. Spawne einen "Zombie".

Drücke auf Spielen und beobachte, wie er läuft. Klicke dann auf Prüfen.

Probier es selbst

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

print("The base can take " .. Settings.BaseHealth .. " hits")

-- Jeder Spieler erhält Money auf der Bestenliste
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local money = Instance.new("IntValue")
	money.Name = "Money"
	money.Value = Settings.StartMoney
	money.Parent = leaderstats
end)
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: Tower Defense