PathfindingService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço
Não replicado

Serviço de Encontro de Caminho é usado para encontrar caminhos lógicos entre dois pontos, garantindo que os personagens possam se mover entre os pontos sem encontrar paredes ou outros obstáculos.Por padrão, o caminho mais curto é calculado, mas você pode implementar modificadores de busca de caminho para calcular caminhos mais inteligentes através de vários materiais, ao redor de regiões definidas ou através de obstáculos.

Veja Encontro de Caminho de Personagem para detalhes de uso.

Propriedades

Métodos

CreatePath

Cria um objeto Path baseado em vários parâmetros de agente. As chaves e valores válidos na tabela agentParameters são os seguintes:


<th>Tipo</th>
<th>Padrão</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Agente de Radius</b></td>
<td>integral</td>
<td>2</td>
<td>Determina a quantidade mínima de espaço horizontal necessária para que o espaço vazio seja considerado percorrível.</td>
</tr>
<tr>
<td><b>Altura do Agente</b></td>
<td>integral</td>
<td>5</td>
<td>Determina a quantidade mínima de espaço vertical necessária para que o espaço vazio seja considerado percorrível.</td>
</tr>
<tr>
<td><b>AgenteCanJump</b></td>
<td>booleano</td>
<td>verdadeiro</td>
<td>Determina se o pulo durante a busca de caminho é permitido.</td>
</tr>
<tr>
<td><b>AgentePodeEscalar</b></td>
<td>booleano</td>
<td>falso</td>
<td>Determina se é permitido escalar <code>Class.TrussPart|TrussParts</code> durante a busca de caminho.</td>
</tr>
<tr>
<td><b>Espaçamento de Pontos de Caminho</b></td>
<td>número</td>
<td>4</td>
<td>Determina o espaçamento entre os pontos de caminho intermediários no caminho.</td>
</tr>
<tr>
<td><b>Custos</b></td>
<td>tabela</td>
<td>{}</td>
<td>Tabela de materiais ou definida <code>Class.PathfindingModifiedor|PathfindingModifiers</code> e seu "custo" para a traversal.Útil para fazer com que o agente prefira determinados materiais/regiões sobre outros.Veja <a href="/characters/pathfinding#pathfinding-modifiers">aqui</a> para detalhes.</td>
</tr>
</tbody>
Chave

Parâmetros

agentParameters: Dictionary

Tabela Luau que permite refinar o caminho para o tamanho do agente (o humanoide que se moverá ao longo do caminho).Veja acima para chaves válidas, tipos e descrições.

Valor Padrão: "nil"

Devolução

Um ObjetoPath A.

Amostras 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.

Creating a Path with Pathfinding Service

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

Rendimentos

Essa função é usada para encontrar um Path entre dois pontos fornecidos.Este caminho usa a grade de navegação criada por PathfindingService e garante que o caminho possa ser seguido por um personagem Roblox de tamanho regular.

Essa função retorna um objeto Path que contém as coordenadas do caminho.Se nenhum caminho for encontrado entre os dois pontos, essa função ainda retornará um ObjetoPath , mas o objeto Path.Status desse Objetoserá Enum.PathStatus.NoPath .

Para obter os pontos de caminho de um ObjetoPath, você pode usar a função Path:GetWaypoints().

Parâmetros

start: Vector3

Coordenadas de início de caminho.

Valor Padrão: ""
finish: Vector3

Coordenadas de finalização de caminho.

Valor Padrão: ""

Devolução

Um ObjetoPath A.

Eventos