Path

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Replicato

Path oggetti memorizzano il risultato di percorsi creati da PathfindingService:CreatePath() .

Una volta creato un oggetto percorso, puoi chiamare Path:ComputeAsync() con un punto di partenza e un punto di arrivo.Questo cercherà di calcolare un percorso valido per un personaggio da muoversi, in base ai parametri predefiniti o personalizzati passati a CreatePath() .Se trova con successo un percorso, l'oggetto avrà un valore di .Altrimenti lo stato sarà Enum.PathStatus.NoPath che può verificarsi se ci sono ostacoli tra i due punti (e non c'è modo di aggirarli) o se i punti sono all'interno di oggetti solidi.

Oltre a ComputeAsync() , gli oggetti Path hanno il metodo GetWaypoints() che restituisce un elenco di punti di passaggio che rappresentano i punti che un personaggio dovrebbe seguire in sequenza per arrivare dall'inizio alla fine del percorso.

Infine, oggetti possono essere connessi all'evento .Questo evento si attiverà se, in qualsiasi momento durante l'esistenza del percorso, il percorso è bloccato.Nota che questo può accadere dietro un personaggio che si muove lungo il percorso, non solo di fronte ad esso.

Sommario

Metodi

Eventi

Proprietà

Sola Lettura
Non Replicato
Lettura Parallela

Il successo del generato Path .

Metodi

GetWaypoints

Questa funzione restituisce un array di tutti i PathWaypoints in un Path , come calcolato da Path:ComputeAsync() .

Ogni punto di percorso nell'array specifica una posizione Vector3 e action da prendere quando questo PathWaypoint viene raggiunto.L'array è ordinato nell'ordine dei waypoint dal percorso di partenza al percorso di Terminare.

Se un percorso non potrebbe essere calcolato, questa funzione restituirà un vettorevuoto.


Restituzioni

Un array di PathWaypoints ordinato dal percorso di avvio al percorso di Terminare.

Campioni di codice

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

Resa

Questa funzione controlla se un percorso è bloccato a partire dal punto di inizio indicato da start .

Restituisce il primo punto di occlusione se bloccato, -1 se non.restituisce un errore se start è inferiore a 0 o superiore al numero di punti di percorso nel Path.

Parametri

start: number
Valore predefinito: ""

Restituzioni

ComputeAsync

()
Resa

Questa funzione calcola un Path da una posizione di partenza a una posizione finale.Questa funzione non viene chiamata automaticamente quando viene creato un percorso e deve essere invocata ogni volta che il percorso deve essere aggiornato.

Una volta calcolato il percorso, avrà una serie di punti di passaggio che, quando seguiti, possono portare un personaggio lungo il percorso.Questi punti vengono raccolti con la funzione Path:GetWaypoints().

Parametri

start: Vector3

La posizione mondiale in cui inizia il percorso calcolato.

Valore predefinito: ""
finish: Vector3

La posizione mondiale in cui termina il percorso calcolato.

Valore predefinito: ""

Restituzioni

()

Campioni di codice

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)

Eventi

Blocked

Si accende quando il percorso calcolato diventa bloccato.Si noti che i percorsi possono essere bloccati da qualche parte dietro l'agente, come un mucchio di detriti che cade su un percorso mentre l'agente scappa.Vedi Trattamento dei percorsi bloccati per i dettagli sulla verifica del progresso del punto di avanzamento di un agente lungo un percorso.

Parametri

blockedWaypointIdx: number

Unblocked

Si accende quando un percorso calcolato bloccato viene sbloccato.Nota che un percorso bloccato può diventare non bloccato da qualche parte dietro l'agente, rendendo effettivamente superflua la reazione a questo evento.Vedi Trattamento dei percorsi bloccati per i dettagli sulla verifica del progresso del punto di avanzamento di un agente lungo un percorso.

Parametri

unblockedWaypointIdx: number