Path
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Path les objets stockent le résultat des chemins créés par PathfindingService:CreatePath() .
Une fois qu'un objet de chemin est créé, vous pouvez
En plus de ComputeAsync() , Path les objets ont le GetWaypoints() méthode qui renvoie une liste de points représentant les points qu'un personnage doit suivre en séquence pour obtenir du début au bout du chemin.
Enfin, Path 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é. Remarquez que cela peut se produire 1>derrière1> un personnage se déplaçant le long du chemin, non pas seulement en front de lui.
Résumé
Propriétés
Le succès de la génération de Path .
Méthodes
Renvoie une tableau de points dans le chemin.
Vérifie si un chemin est bloqué à partir d'un point de départ spécifique.
Calculer un Path à partir d'une position de départ à une position d'arrivée.
Évènements
Tire quand le chemin calculé devient bloqué.
Feuille quand un chemin calculé qui a été 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 fin dans l'arrêt spécifie une position Vector3 et action à prendre lorsque ce point de fin est atteint. L'arrêt est organisé dans l'ordre des points de fin du chemin du début au chemin de terminer.
Si un chemin n'a pas pu être calculé, cette fonction renverra un matricevide.
Retours
Un tableau de PathWaypoints commandés du début du chemin au terminerdu chemin.
Échantillons de code
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 départ indiqué par débuter .
Il renvoie le premier point d'ancrage d'occlusion si bloqué, -1 si non. il renvoie une erreur si début est inférieur à 0 ou supérieur au nombre de points d'ancrage dans le Path.
Paramètres
Retours
ComputeAsync
Cette fonction calcule un Path à partir d'une position de départ à une position d'arrivée. Cette fonction n'est pas automatiquement appelée lorsqu'un chemin est créé et doit être invoquée à chaque fois que le chemin doit être mis à jour.
Une fois que le chemin est calculé, il aura une série de points de direction qui, lorsqu'ils sont suivis, peuvent mener un personnage le long du chemin. Ces points sont récupérés avec la fonction Path:GetWaypoints().
Paramètres
La position du monde où le chemin calculé commence.
La position du monde où la voie calculée se termine.
Retours
Échantillons de code
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
Se déclenche lorsque le chemin calculé devient bloqué. Remarquez que les chemins peuvent être bloqués quelque part derrière le bloc, comme un tas de gravier qui tombe sur un chemin alors que l'agent s'enfuit. Voir Gérer les chemins bloqués pour plus de détails sur la vérification de la progression du point de bloc d'un agent le long d'un chemin.
Paramètres
Unblocked
Se déclenche lorsqu'un chemin calculé bloqué devient débloqué. Notez que un chemin bloqué peut devenir débloqué quelque part derrière l'agent, ce qui rend réaction à cet événement inutile. Voir Gérer les cheins bloqués pour plus de détails sur le suivi de la progression du point d'arrêt d'un agent le long d'un chemin.