Path

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
No replicado

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

Métodos

Eventos

Propiedades

Solo lectura
No replicado
Leer paralelo

El éxito del generado Path .

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.

Get Path Waypoints

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

Proporciona

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

start: number
Valor predeterminado: ""

Devuelve

ComputeAsync

()
Proporciona

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

start: Vector3

La posición mundial en la que comienza el camino calculado.

Valor predeterminado: ""
finish: Vector3

La posición mundial donde termina el camino computado.

Valor predeterminado: ""

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.

Using the Pathfinding Service

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

blockedWaypointIdx: number

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.

Parámetros

unblockedWaypointIdx: number