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, assicurando che i personaggi possano muoversi tra i punti senza correre in pareti o altri ostacoli. Per impostazione predefinita, il percorso più breve viene calcolato, ma puoi implementare modificatori di percorso per calcolare percorsi più intelligenti su diversi materiali, intorno a regioni definite o attraverso gli ostacoli.
Vedi Pathfinding dei caratteri per i dettagli di utilizzo.
Proprietà
Metodi
CreatePath
Crea un oggetto Path basato su diversi parametri dell'agente. Le chiavi e i valori validi nella tabella agentParameters sono i seguenti:
<tbody><tr><td><b>AgentRadius</b></td><td>integro</td><td>2</td><td>Determina la quantità minima di spazio orizzontale richiesta perché lo spazio vuoto sia considerato attraversabile.</td></tr><tr><td><b>Altezza dell'agente</b></td><td>integro</td><td>5</td><td>Determina la quantità minima di spazio verticale richiesta perché lo spazio vuoto sia considerato attraversabile.</td></tr><tr><td><b>AgentCanJump</b></td><td>booleano</td><td>vero</td><td>Determina se è permesso saltare durante la creazione del percorso.</td></tr><tr><td><b>AgentCanClimb</b></td><td>booleano</td><td>falso</td><td>Determina se è Class.TrussPart|TrussParts durante la creazione del percorso.</td></tr><tr><td><b>Spaziatura dei Waypoint</b></td><td>number</td><td>4</td><td>Determina lo spazio tra i punti di interruzione nella strada.</td></tr><tr><td><b>Costi</b></td><td>tabella</td><td></td><td>Tavola di materiali o definiti <code>Class.PathfindingModifier|PathfindingModifiers</code> e il loro "costo" per il passaggio. Utile per rendere l'agente preferire determinati materiali/regioni rispetto ad altri. Vedi <a href="../../../characters/pathfinding.md#pathfinding-modifiers">qui</a> per i dettagli.</td></tr></tbody>
Chiave | Tipo | Predefinito | Descrizione |
---|
Parametri
Tavola Lua che ti consente di mettere a punto il percorso per la dimensione dell'agente (il humanoid che si muoverà lungo il percorso). Vedi sopra per le chiavi, i tipi e le descrizioni valide.
Restituzioni
Campioni di codice
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 il suo stato Path.Status sarà 1> Enum.PathStatus.NoPath1> .
Per ottenere i waypoint di un oggetto Path, puoi usare la funzione Path:GetWaypoints().