Menu
CoddyTech

Suivre le chemin

Leçon 2 sur 18 du cours Jeu Roblox : Tower Defense de Coddy.

Les ennemis suivent un chemin marqué par des éléments invisibles dans workspace.Path.Waypoints, nommés de 1 à 6. GetChildren ne garantit aucun ordre : commence donc par les trier selon le nombre indiqué dans leur nom :

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

Chaque ennemi est un modèle dans ServerStorage.Enemies : clone-le, place-le au-dessus du waypoint 1 avec PivotTo, puis définis workspace.Enemies comme parent.

Un Humanoid se déplace avec MoveTo, et son événement MoveToFinished se déclenche lorsqu'il arrive. Il abandonne après 8 secondes et se déclenche avec false, donc un ennemi lent sur un long tronçon reçoit à nouveau l'ordre jusqu'à ce qu'il arrive :

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

La marche prend du temps, donc walkPath s'exécute dans son propre thread avec task.spawn, et le script poursuit son exécution.

challenge icon

Défi

Facile
  1. Récupère ServerStorage et local enemies = workspace.Enemies.
  2. Mets les points de passage dans une liste et trie-la par numéro.
  3. Écris walkPath(enemy) : pour les points de passage de 2 jusqu’au dernier, fais-lui utiliser MoveTo jusqu’à ce que MoveToFinished indique qu’il est arrivé. Arrête-toi si l’ennemi a disparu (not enemy.Parent).
  4. Écris spawnEnemy(kind) : clone le modèle, place-le 5 studs au-dessus du point de passage 1, définis enemies comme parent, démarre walkPath avec task.spawn et renvoie-le.
  5. Fais apparaître un "Zombie".

Appuie sur Jouer et regarde-le marcher. Puis clique sur Vérifier.

Essayez vous-même

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

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

-- Chaque joueur reçoit Money dans le classement
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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Jeu Roblox : Tower Defense