PathfindingService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
PathfindingService se usa para encontrar rutas lógicas entre dos puntos, asegurando que los personajes puedan moverse entre los puntos sin encontrarse con paredes u otros obstáculos.Por defecto, se calcula el camino más corto, pero puedes implementar modificadores de búsqueda de caminos para calcular rutas más inteligentes a través de varios materiales, alrededor de regiones definidas o a través de obstáculos.
Vea Encuentro de camino de caracteres para detalles de uso.
Resumen
Métodos
Encuentra un Path entre los dos puntos proporcionados.
Propiedades
Métodos
CreatePath
Crea un objeto Path basado en varios parámetros de agente. Las claves y los valores válidos en la tabla agentParameters son los siguientes:
<th>Tipo</th><th>Por defecto</th><th>Descripción</th></tr></thead><tbody><tr><td><b>AgenteRadio</b></td><td>entero</td><td>2</td><td>Determina la cantidad mínima de espacio horizontal requerida para que el espacio vacío se considere recorrible.</td></tr><tr><td><b>Altura del agente</b></td><td>entero</td><td>5</td><td>Determina la cantidad mínima de espacio vertical requerida para que el espacio vacío se considere recorrible.</td></tr><tr><td><b>AgenteCanJump</b></td><td>booleno</td><td>cierto</td><td>Determina si se permite saltar durante la búsqueda de ruta.</td></tr><tr><td><b>AgenteCanClimb</b></td><td>booleno</td><td>falso</td><td>Determina si se permite escalar <code>Class.TrussPart|TrussParts</code> durante la búsqueda de ruta.</td></tr><tr><td><b>Espacio entre puntos de ruta</b></td><td>número</td><td>4</td><td>Determina el espacio entre los puntos de ruta intermedios en el camino.</td></tr><tr><td><b>Costos</b></td><td>tabla</td><td>{}</td><td>Tabla de materiales o definida <code>Clase.PathfindingModifiedor|PathfindingModificadores</code> y su "costo" para la navegación.Útil para hacer que el agente prefiera ciertos materiales/regiones sobre otros.Vea <a href="../../../characters/pathfinding.md#pathfinding-modifiers">aquí</a> para detalles.</td></tr></tbody>
Clave |
---|
Parámetros
Tabla Luau que te permite ajustar el camino para el tamaño del agente (el humanoide que se moverá por el camino).Vea más arriba para obtener claves, tipos y descripciones válas.
Devuelve
Muestras de código
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.
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
Esta función se usa para encontrar un Path entre dos puntos proporcionados.Este camino utiliza la cuadrícula de navegación creada por PathfindingService y asegura que el camino pueda ser seguido por un personaje de Roblox de tamaño regular.
Esta función devuelve un objeto Path que contiene las coordenadas del camino.Si no se encuentra ningún camino entre los dos puntos, esta función aún devolverá un objeto Path , pero el Path.Status de ese objeto será Enum.PathStatus.NoPath .
Para obtener los puntos de ruta de un objeto Path, puedes usar la función Path:GetWaypoints().
Parámetros
Coordinadas de inicio de ruta.
Coordinadas de finalización de ruta.