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.
Aufgabe
Einfach- Rufe
ServerStorageundlocal enemies = workspace.Enemiesab. - Lege die Wegpunkte in eine Liste und sortiere sie nach Nummer.
- Schreibe
walkPath(enemy): Gehe die Wegpunkte von 2 bis zum letzten durch und rufe für jedenMoveToauf, bisMoveToFinishedmeldet, dass er angekommen ist. Beende die Funktion, wenn der Gegner verschwunden ist (not enemy.Parent). - Schreibe
spawnEnemy(kind): Klone das Modell, platziere es 5 Studs über Wegpunkt 1, setzeenemiesals dessen Parent, startewalkPathmittask.spawnund gib es zurück. - 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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.