PathfindingService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
PathfindingService est utilisé pour trouver des chemins logiques entre deux points, en assurant que les personnages peuvent se déplacer entre les points sans courir dans les murs ou d'autres obstacles. Par défaut, le chemin le plus court est calculé, mais vous pouvez implémenter des modificateurs de chemin pour calculer des chemins plus intelligents sur différents matériaux, autour de régions définées ou via des obstacles.
Voir Détection du chemin du personnage pour plus de détails d'utilisation.
Résumé
Méthodes
Trouve un Path entre les deux points fournis.
Propriétés
Méthodes
CreatePath
Crée un objet Path basé sur divers paramètres d'agent. Les clés et les valeurs valides dans la table agentParameters sont les suivantes :
<tbody><tr><td><b>AgentRadius</b></td><td>entier</td><td>2</td><td>Détermine la quantité minimale d'espace horizontal requise pour que l'espace vide soit considéré comme traversable.</td></tr><tr><td><b>Hauteur d'agent</b></td><td>entier</td><td>5</td><td>Détermine la quantité minimale d'espace vertical requise pour que l'espace vide soit considéré comme traversable.</td></tr><tr><td><b>AgentCanJump</b></td><td>boîtier</td><td>vrai</td><td>Détermine si vous pouvez sauter pendant la détermination du chemin.</td></tr><tr><td><b>AgentCanClimb</b></td><td>boîtier</td><td>faux</td><td>Détermine si la montée de <code>Class.TrussPart|TrussParts</code> pendant la recherche de chemin est autorisée.</td></tr><tr><td><b>Espace d'espacement Waypoint</b></td><td>number</td><td>4</td><td>Détermine l'écart entre les points d'intermédiaire dans le chemin.</td></tr><tr><td><b>Coûts</b></td><td>table</td><td></td><td>Table des matériaux ou définis <code>Class.PathfindingModifier|PathfindingModifiers</code> et leur «coût» pour la traversée. Utile pour faire en sorte que l'agent préfère certains matériaux/ régions par rapport à d'autres. Voir <a href="../../../characters/pathfinding.md#pathfinding-modifiers">ici</a> pour plus de détails.</td></tr></tbody>
Clé | Type | Par défaut | Description |
---|
Paramètres
Table Lua qui vous permet de peaufiner le chemin pour la taille de l'agent (le humanoid qui se déplacera le long du chemin). Voir ci-dessus pour les clés, les types et les décrire valides.
Retours
Échantillons de code
local Workspace = game:GetService("Workspace")
local PathfindingService = game:GetService("PathfindingService")
-- This model contains a start, end and three paths between the player can walk on: Snow, Metal and LeafyGrass
local PathOptionsModel = script.Parent.PathOptions
local startPosition = PathOptionsModel.Start.Position
local finishPosition = PathOptionsModel.End.Position
-- Create a path that avoids Snow and Metal materials
-- This will ensure the path created avoids the Snow and Metal paths and guides
-- the user towards the LeafyGrass path
local path = PathfindingService:CreatePath({
AgentRadius = 3,
AgentHeight = 6,
AgentCanJump = false,
Costs = {
Snow = math.huge,
Metal = math.huge,
},
})
-- Compute the path
local success, errorMessage = pcall(function()
path:ComputeAsync(startPosition, finishPosition)
end)
-- Confirm the computation was successful
if success and path.Status == Enum.PathStatus.Success then
-- For each waypoint, create a part to visualize the path
for _, waypoint in path:GetWaypoints() do
local part = Instance.new("Part")
part.Position = waypoint.Position
part.Size = Vector3.new(0.5, 0.5, 0.5)
part.Color = Color3.new(1, 0, 1)
part.Anchored = true
part.CanCollide = false
part.Parent = Workspace
end
else
print(`Path unable to be computed, error: {errorMessage}`)
end
FindPathAsync
Cette fonction est utilisée pour trouver un Path entre deux points fournis. Ce chemin utilise le grille de navigation créée par PathfindingService et s'assure que le chemin peut être suivi par un personnage Roblox de taille normale.
Cette fonction renvoie un objet Path qui contient les coordonnées du chemin. Si aucun chemin n'est trouvé entre les deux points, cette fonction renverra toujours un objet Path mais son statut Path.Status sera 1> Enum.PathStatus.NoPath1>.
Pour obtenir les points d'itinéraire d'un objet Path, vous pouvez utiliser la fonction Path:GetWaypoints().