PathfindingService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
PathfindingService viene utilizzato per trovare percorsi logici tra due punti, garantendo che i personaggi possano muoversi tra i punti senza incappare in muri o altri ostacoli.Per impostazione predefinita, viene calcolato il percorso più breve, ma puoi implementare i modificatori di pathfinding per calcolare percorsi più intelligenti attraverso vari materiali, intorno a regioni definite o attraverso ostacoli.
Vedi Character Pathfinding per i dettagli dell'uso.
Proprietà
Metodi
CreatePath
Crea un oggetto Path basato su vari parametri dell'agente. Le chiavi e i valori validi nella tabella agentParameters sono i seguenti:
<th>Tipo</th><th>Basilare</th><th>Descrizione</th></tr></thead><tbody><tr><td><b>AgenteRadius</b></td><td>integro</td><td>2</td><td>Determina la quantità minima di spazio orizzontale richiesta per lo spazio vuoto da considerare percorribile.</td></tr><tr><td><b>Altezza agente</b></td><td>integro</td><td>5</td><td>Determina la quantità minima di spazio verticale richiesta per lo spazio vuoto da considerare percorribile.</td></tr><tr><td><b>AgenteCanJump</b></td><td>booleano</td><td>vero</td><td>Determina se è consentito saltare durante la ricerca del percorso.</td></tr><tr><td><b>AgenteCanClimb</b></td><td>booleano</td><td>fallito</td><td>Determina se è consentito salire <code>Class.TrussPart|TrussParts</code> durante la ricerca del percorso.</td></tr><tr><td><b>Spaziatura dei punti di interesse</b></td><td>numbero</td><td>4</td><td>Determina lo spazio tra i punti di percorso intermedi nel percorso.</td></tr><tr><td><b>Costi</b></td><td>tavola</td><td>{}</td><td>Tabella dei materiali o definita <code>Class.PathfindingModifiedore|PathfindingModifiers</code> e il loro "costo" per la navigazione.Utile per far preferire all'agente determinati materiali/regioni rispetto ad altri.Vedi <a href="/characters/pathfinding#pathfinding-modifiers">qui</a> per i dettagli.</td></tr></tbody>
Chiave |
---|
Parametri
Tavola Luau che ti consente di ottimizzare il percorso per le dimensioni dell'agente (l'oidoide che si muoverà lungo il percorso).Vedi sopra per le chiavi, i tipi e le descrizioni valide.
Restituzioni
Campioni di codice
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.
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
Questa funzione viene utilizzata per trovare un Path tra due punti forniti.Questo percorso utilizza la griglia di navigazione creata da PathfindingService e assicura che il percorso possa essere seguito da un personaggio Roblox di dimensioni normali.
Questa funzione restituisce un oggetto Path che contiene le coordinate del percorso.Se non viene trovato alcun percorso tra i due punti, questa funzione restituirà comunque un oggetto Path , ma l'oggetto Path.Status di quell'oggetto sarà Enum.PathStatus.NoPath .
Per ottenere i punti di percorso di un oggetto Path , puoi usare la funzione Path:GetWaypoints().
Parametri
Coordinate di inizio percorso.
Coordinate di fine percorso.