Path
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Path objetos armazenam o resultado de caminhos criados por PathfindingService:CreatePath() .
Um objeto de caminho é criado quando um objeto
Além de ComputeAsync(), Path objetos têm o método GetWaypoints() que retorna uma lista de waypoints representando os pontos que um personagem deve seguir em sequência para chegar ao fim do caminho.
Finalmente, objetos Path podem ser conectados ao evento Class.Caminho.Blocked . Este evento será disparado se, em qualquer momento durante a existência do caminho, o caminho for bloqueado. Observe que isso pode ocorrer Path.Blocked de um personagem se movendo ao longo do caminho, não apenas na frente dele.
Resumo
Propriedades
O sucesso do Path gerado.
Métodos
Retorna um array de pontos no caminho.
Verifica se um caminho está bloqueado a partir de um ponto de início específico.
Calcula um Path a partir de uma posição de início para uma posição de fim.
Eventos
Dispara quando o caminho calculado fica bloqueado.
Incêndia quando um caminho calculado que estava 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 referência na matriz especifica uma posição Vector3 e action para levar quando este PathWaypoint for atingido. O array é arranjado na ordem dos pontos de referência a partir do início do caminho até o terminar/parar/sairdo caminho.
Se um caminho não puder ser calculado, esta função retornará um matriz / listavazio.
Devolução
Um array de PathWaypoints ordenado a partir do início do caminho até o terminar/parar/sairdo caminho.
Amostras de código
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 .
Retorna o primeiro ponto de interrupção de occlusão, se for bloqueado, -1 se não. retorna um erro se start estiver menor que 0 ou maior que o número de pontos de interrupção na Path.
Parâmetros
Devolução
ComputeAsync
Essa função calcula um Path a partir 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 sempre 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 coletados com a função Path:GetWaypoints().
Parâmetros
A posição mundial onde o caminho calculado começa.
A posição mundial onde o caminho calculado termina.
Devolução
Amostras de código
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
Fires quando o caminho calculado se torna bloqueado. Observe que caminhos podem ser bloqueados em algum lugar após o agente, como uma pilha de pedregulhos caindo em um caminho enquanto o agente corre. Veja Manuseio de Caminhos Bloqueados para detalhes sobre verificar o progresso do ponto de destino de um agente ao longo de um caminho.
Parâmetros
Unblocked
Fires quando um caminho calculado que foi bloqueado se torna desbloqueado. Observe que um caminho bloqueado pode se tornar desbloqueado em algum lugar após o agente, o que efetivamente torna a reação a este evento necessária. Veja Manuseio de Caminhos Bloqueados para detalhes sobre verificar o progresso do ponto de reação de um agente ao longo de um caminho.