Path
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
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
O sucesso do gerado Path .
Métodos
Retorna um conjunto de pontos no caminho.
Verifica se um caminho está bloqueado a partir de um ponto de passagem específico.
Calcula um Path a partir de uma posição de início para uma posição de fim.
Eventos
Incêndios quando o caminho computado se torna bloqueado.
Incêndios quando um caminho computado que foi bloqueado se torna desbloqueado.
Propriedades
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.
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
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
Devolução
ComputeAsync
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
A posição mundial onde o caminho computado começa.
A posição mundial onde o caminho computado termina.
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.
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
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.