Path
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Los objetos del camino almacenan el resultado de los caminos creados por .
Una vez que se crea un objeto de ruta, puedes llamar Path:ComputeAsync() con un punto de inicio y un punto de finalización.Esto intentará calcular un camino válido para que un personaje se mueva, basado en los parámetros predeterminados o personalizados pasados a CreatePath() .Si ComputeAsync() encuentra con éxito un camino, el objeto Path tendrá un valor de Path.Status de Enum.PathStatus.Success.De lo contrario, el estado será Enum.PathStatus.NoPath que puede ocurrir si hay obstáculos entre los dos puntos (y no hay manera de alrededor) o si los puntos están dentro de objetos sólidos.
Además de ComputeAsync() , los objetos Path tienen el método GetWaypoints() que devuelve una lista de puntos de ruta que representan los puntos que un personaje debe seguir en secuencia para llegar desde el principio al final del camino.
Por último, los objetos Path pueden ser conectados al evento Path.Blocked.Este evento se disparará si, en cualquier momento durante la existencia del camino, el camino está bloqueado.Tenga en cuenta que esto puede ocurrir detrás de un personaje que se mueve por el camino, no solo delante de él.
Resumen
Propiedades
El éxito del generado Path .
Métodos
Devuelve un array de puntos en el camino.
Comprueba si un camino está bloqueado a partir de un punto de ruta específico.
Calcula un Path desde una posición de inicio a una posición de final.
Eventos
Se enciende cuando el camino calculado se bloquea.
Se enciende cuando un camino computado que estaba bloqueado se desbloquea.
Propiedades
Métodos
GetWaypoints
Esta función devuelve un array de todos los PathWaypoints en un Path , como se calculó por Path:ComputeAsync() .
Cada punto de ruta en el array especifica una posición Vector3 y action para tomar cuando se alcance este punto de ruta.El array se ordena en el orden de los puntos de ruta desde el comienzo del camino hasta el finalizardel camino.
Si no se pudo calcular un camino, esta función devolverá un matriz/listavacío.
Devuelve
Un array de PathWaypoints ordenado desde el comienzo del camino hasta el finalizardel camino.
Muestras de código
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
Esta función comprueba si un camino está bloqueado a partir del punto de ruta indicado por comenzar .
Devuelve el primer punto de ruta de ocusión si está bloqueado, -1 si no.devuelve un error si comenzar es menor que 0 o mayor que el número de puntos de ruta en el Path.
Parámetros
Devuelve
ComputeAsync
Esta función calcula un Path desde una posición de inicio a una posición de final.Esta función no se llama automáticamente cuando se crea un camino y debe invocarse cada vez que el camino deba actualizarse.
Una vez que se compute el camino, tendrá una serie de puntos de ruta que, al seguirse, pueden llevar a un personaje por el camino.Estos puntos se recopilan con la función Path:GetWaypoints().
Parámetros
La posición mundial en la que comienza el camino calculado.
La posición mundial donde termina el camino computado.
Devuelve
Muestras de código
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)
Eventos
Blocked
Se enciende cuando el camino calculado se bloquea.Tenga en cuenta que los caminos pueden bloquearse en algún lugar detrás del agente, como una pila de escombros que cae en un camino mientras el agente huye.Vea Bloqueo de rutas manejadas para detalles sobre cómo verificar el progreso del punto de ruta hacia adelante de un agente a lo largo de un camino.
Parámetros
Unblocked
Se enciende cuando un camino computado que estaba bloqueado se desbloquea.Tenga en cuenta que un camino bloqueado puede desbloquearse en algún lugar detrás del agente, haciendo efectivamente innecesaria la reacción a este evento.Vea Bloqueo de rutas manejadas para detalles sobre cómo verificar el progreso del punto de ruta hacia adelante de un agente a lo largo de un camino.