PathfindingService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service
Non répliqué

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.

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éTypePar défautDescription

Paramètres

agentParameters: Dictionary

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.

Valeur par défaut : "nil"

Retours

Un objet Path.

Échantillons de code

Creating a Path with Pathfinding Service

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

Rendement

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().

Paramètres

start: Vector3

Début de la voie.

finish: Vector3

Coordonnées de fin de chemin.


Retours

Un objet Path.

Évènements