Path

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
Não replicado

Objetos de caminho armazenam o resultado de caminhos criados por PathfindingService:CreatePath().

Uma vez que um objeto de caminho é criado, você pode chamar Path:ComputeAsync() com um ponto de partida e um ponto de chegada.Isso tentará calcular um caminho válido para um personagem se mover, com base em parâmetros padrão ou personalizados passados para CreatePath() .Se ComputeAsync() encontrar com sucesso um caminho, o objeto Path terá um valor de Path.Status de Enum.PathStatus.Success.Caso contrário, o status será Enum.PathStatus.NoPath que pode ocorrer se houver obstáculos entre os dois pontos (e sem caminho ao redor) ou se os pontos estiverem dentro de objetos sólidos.

Além de ComputeAsync() , os objetos Path têm o método GetWaypoints() que retorna uma lista de pontos de caminho que representam os pontos que um personagem deve seguir em sequência para chegar do começo ao fim do caminho.

Finalmente, objetos podem ser conectados ao evento >.Este evento será disparado se, a qualquer momento durante a existência do caminho, o caminho for bloqueado.Observe que isso pode ocorrer atrás de de um personagem se movendo ao longo do caminho, não apenas na frente dele.

Resumo

Propriedades

Métodos

Eventos

Propriedades

Somente leitura
Não replicado
Ler Parallel

O sucesso do gerado Path .

Métodos

GetWaypoints

Essa função retorna um array de todos os PathWaypoints em um Path, como calculado por Path:ComputeAsync() .

Cada ponto de caminho no array especifica uma posição Vector3 e action para tomar quando este PathWaypoint for alcançado.O array é organizado na ordem dos pontos de caminho do início do caminho ao terminar/parar/sairdo caminho.

Se um caminho não pôde ser calculado, essa função retornará um matriz / listavazio.


Devolução

Um array de PathWaypoints ordenado do começo do caminho até o terminar/parar/sairdo caminho.

Amostras 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

Rendimentos

Essa função verifica se um caminho está bloqueado a partir do ponto de início indicado por começar .

Ele retorna o primeiro waypoint de occlusão se bloqueado, -1 se não.ele retorna um erro se iniciar for menor que 0 ou maior que o número de pontos de caminho no Path.

Parâmetros

start: number
Valor Padrão: ""

Devolução

ComputeAsync

()
Rendimentos

Essa função calcula um Path de uma posição de início para uma posição de fim.Essa função não é chamada automaticamente quando um caminho é criado e deve ser invocada cada vez que o caminho precisa ser atualizado.

Uma vez que o Caminho é calculado, ele terá uma série de pontos de caminho que, quando seguidos, podem levar um personagem ao longo do caminho.Esses pontos são reunidos com a função Path:GetWaypoints() .

Parâmetros

start: Vector3

A posição mundial onde o caminho computado começa.

Valor Padrão: ""
finish: Vector3

A posição mundial onde o caminho computado termina.

Valor Padrão: ""

Devolução

()

Amostras 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

Incêndios quando o caminho computado se torna bloqueado.Observe que os caminhos podem se tornar bloqueados em algum lugar atrás do agente, como uma pilha de detritos caindo em um caminho enquanto o agente foge.Veja Manuseio de Rotas Bloqueadas para detalhes sobre a verificação do progresso do ponto de caminho de frente de um agente ao longo de um caminho.

Parâmetros

blockedWaypointIdx: number

Unblocked

Incêndios quando um caminho computado que foi bloqueado se torna desbloqueado.Observe que um caminho bloqueado pode se tornar desbloqueado em algum lugar atrás do agente, tornando a reação a esse evento desnecessária.Veja Manuseio de Rotas Bloqueadas para detalhes sobre a verificação do progresso do ponto de caminho de frente de um agente ao longo de um caminho.

Parâmetros

unblockedWaypointIdx: number