Path
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Les objets du chemin stockent le résultat des chemins créés par PathfindingService:CreatePath().
Une fois qu'un objet de chemin est créé, vous pouvez appeler Path:ComputeAsync() avec un point de départ et un point d'arrivée.Cela tentera de calculer un chemin valide pour qu'un personnage se déplace, en fonction des paramètres par défaut ou personnalisés transmis à CreatePath() .Si trouve avec succès un chemin, l'objet aura une valeur de .Sinon, le statut sera Enum.PathStatus.NoPath qui peut se produire si des obstacles se trouvent entre les deux points (et aucun moyen de contourner) ou si les points se trouvent à l'intérieur d'objets solides.
En plus de ComputeAsync() , les objets Path ont la méthode GetWaypoints() qui renvoie une liste de points de passage représentant les points qu'un personnage doit suivre en séquence pour aller du début à la fin du chemin.
Enfin, Path les objets peuvent être connectés à l'événement Path.Blocked.Cet événement se déclenchera si, à tout moment pendant l'existence du chemin, le chemin est bloqué.Notez que cela peut se produire derrière un personnage se déplaçant le long du chemin, pas seulement devant.
Résumé
Propriétés
Le succès du Path.
Méthodes
Renvoie une série de points dans le chemin.
Vérifie si un chemin est bloqué à partir d'un point de passage spécifique.
Calculer un Path à partir d'une position de départ à une position finale.
Évènements
S'enflamme lorsque le chemin calculé devient bloqué.
Se déclenche lorsqu'un chemin calculé bloqué devient débloqué.
Propriétés
Méthodes
GetWaypoints
Cette fonction renvoie un tableau de tous les PathWaypoints dans un Path , comme calculé par Path:ComputeAsync() .
Chaque point de chemin dans l'array spécifie une position Vector3 et action à prendre lorsque ce point de chemin est atteint.L'array est organisé dans l'ordre des points de chemin du début du chemin à la terminerdu chemin.
Si un chemin ne pouvait pas être calculé, cette fonction retournera une matricevide.
Retours
Un ensemble d'éléments de PathWaypoints ordonnés du début du chemin jusqu'à la terminerdu chemin.
Échantillons de code
The example below demonstrates how to create a Path and it's PathWaypoints using the PathService.
It tries to Path:ComputeAsync() a path between two Vector3 positions, from pathStart to pathEnd. If a path is successfully created, indicated by it's Enum.PathStatus, the code block gets an array of its waypoints using Path:GetWaypoints(). Then, it loops through the array and prints each waypoint's position.
local PathfindingService = game:GetService("PathfindingService")
local path = PathfindingService:CreatePath()
local PATH_START = Vector3.new(0, 1, 0)
local PATH_END = Vector3.new(100, 1, 25)
path:ComputeAsync(PATH_START, PATH_END)
if path.Status == Enum.PathStatus.Success then
local waypoints = path:GetWaypoints()
for _, waypoint in pairs(waypoints) do
print(waypoint.Position)
end
end
CheckOcclusionAsync
Cette fonction vérifie si un chemin est bloqué à partir du point de passage indiqué par début .
Il renvoie le premier point de passage d'obclusion s'il est bloqué, -1 sinon.il renvoie une erreur si démarrer est inférieur à 0 ou supérieur au nombre de points de passage dans le Path.
Paramètres
Retours
ComputeAsync
Cette fonction calcule un Path à partir d'une position de départ jusqu'à une position finale.Cette fonction n'est pas appelée automatiquement lorsqu'un chemin est créé et doit être invoquée chaque fois que le chemin doit être mis à jour.
Une fois le chemin calculé, il aura une série de points de passage qui, lorsqu'ils sont suivis, peuvent mener un personnage le long du chemin.Ces points sont réunis avec la fonction Path:GetWaypoints().
Paramètres
La position mondiale où le chemin calculé commence.
La position mondiale où la voie calculée se termine.
Retours
Échantillons de code
The code sample below explores how to move an NPC along a more complex path or around obstacles. This is known as pathfinding.
local PathfindingService = game:GetService("PathfindingService")
local agentParams = {
AgentRadius = 2.0,
AgentHeight = 5.0,
AgentCanJump = false,
}
local currentWaypointIdx = 1
local path = PathfindingService:CreatePath(agentParams)
local humanoidRootPart = script.Parent:FindFirstChild("HumanoidRootPart")
local targetPosition = Vector3.new(50, 0, 50)
path:ComputeAsync(humanoidRootPart.Position, targetPosition)
-- When the path is blocked...
local function OnPathBlocked(blockedWaypointIdx)
-- Check if the obstacle is further down the path
if blockedWaypointIdx > currentWaypointIdx then
-- Recompute the path
path:ComputeAsync(humanoidRootPart.Position, targetPosition)
if path.Status == Enum.PathStatus.Success then
-- Retrieve update waypoint list with path:GetWaypoints()
-- and Continue walking towards target
else
-- Error, path not found
end
end
end
path.Blocked:Connect(OnPathBlocked)
Évènements
Blocked
S'enflamme lorsque le chemin calculé devient bloqué.Notez que les chemins peuvent être bloqués quelque part derrière l'agent, comme une pile de débris tombant sur un chemin lorsque l'agent s'enfuit.Voir Gestion des chemins bloqués pour les détails sur la vérification de la progression du point de passage d'un agent le long d'un chemin.
Paramètres
Unblocked
Se déclenche lorsqu'un chemin calculé bloqué devient débloqué.Notez qu'un chemin bloqué peut devenir débloqué quelque part derrière l'agent, rendant effectivement la réaction à cet événement inutile.Voir Gestion des chemins bloqués pour les détails sur la vérification de la progression du point de passage d'un agent le long d'un chemin.