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, afin que les caractères puissent se déplacer entre les points sans se heurter à des murs ou à d'autres obstacles.Par défaut, le chemin le plus court est calculé, mais vous pouvez implémenter des modifieurs de recherche de chemin pour calculer des chemins plus intelligents à travers différents matériaux, autour de régions définies ou à travers des obstacles.

Voir recherche de chemin de caractère pour les 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 :


<th>Type</th>
<th>Par défaut</th>
<th>Avertissement</th>
</tr>
</thead>
<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>Taille de l'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>L'agent peut sauter</b></td>
<td>booléen</td>
<td>vrai</td>
<td>Détermine si le saut pendant la recherche de chemin est autorisé.</td>
</tr>
<tr>
<td><b>AgentClimber peut escalader</b></td>
<td>booléen</td>
<td>faux</td>
<td>Détermine si l'escalade de <code>Class.TrussPart|TrussParts</code> pendant la recherche de chemin est autorisée.</td>
</tr>
<tr>
<td><b>Espacement des points de chemin</b></td>
<td>numéro</td>
<td>4</td>
<td>Détermine l'espacement entre les points de chemin intermédiaires dans le chemin.</td>
</tr>
<tr>
<td><b>Coûts</b></td>
<td>tableau</td>
<td>{}</td>
<td>Table de matériaux ou définie <code>Class.PathfindingModifiedeur|PathfindingModificateurs</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 à d'autres.Voir <a href="../../../characters/pathfinding.md#pathfinding-modifiers">ici</a> pour les détails.</td>
</tr>
</tbody>
Clé

Paramètres

agentParameters: Dictionary

Table Luau qui vous permet d'ajuster le chemin pour la taille de l'agent (l'humanoïde qui se déplacera le long du chemin).Voir ci-dessus pour les clés, les types et les descriptions valides.

Valeur par défaut : "nil"

Retours

Un objet Path.

Échantillons de code

Demonstrates creating a path using PathfindingService:CreatePath()

'PathOptions' represents a Model with three paths made of different materials. When creating the path we define a large 'Cost' for two of the three paths materials. This will ensure the path created steers towards the path with the material of the lowest 'Cost'.

Once the path is created, small parts are created at each waypoint to visualize the path.

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 la grille de navigation créée par PathfindingService et s'assure que le chemin peut être suivi par un personnage Roblox de taille régulière.

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 retournera toujours un objet Path , mais le Path.Status de cet objet sera Enum.PathStatus.NoPath .

Pour obtenir les points de chemin d'un objet Path, vous pouvez utiliser la fonction Path:GetWaypoints().

Paramètres

start: Vector3

Coordonnées de départ du chemin.

Valeur par défaut : ""
finish: Vector3

Coordonnées de fin de chemin.

Valeur par défaut : ""

Retours

Un objet Path.

Évènements