Classe motore
PathfindingService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Sommario
Proprietà
Metodi
ComputeRawPathAsync(start: Vector3,finish: Vector3,maxDistance: number):Path |
ComputeSmoothPathAsync(start: Vector3,finish: Vector3,maxDistance: number):Path |
CreatePath(agentParameters: Dictionary):Path |
FindPathAsync(start: Vector3,finish: Vector3):Path |
Campioni di codice
Utilizzare il servizio di navigazione
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)
-- Quando il percorso è bloccato...
local function OnPathBlocked(blockedWaypointIdx)
-- Controlla se l'ostacolo è più avanti nel percorso
if blockedWaypointIdx > currentWaypointIdx then
-- Ricalcola il percorso
path:ComputeAsync(humanoidRootPart.Position, targetPosition)
if path.Status == Enum.PathStatus.Success then
-- Recupera l'elenco delle waypoint aggiornate con path:GetWaypoints()
-- e continua a camminare verso l'obiettivo
else
-- Errore, percorso non trovato
end
end
end
path.Blocked:Connect(OnPathBlocked)Riferimento API
Proprietà
EmptyCutoff
Metodi
ComputeRawPathAsync
ComputeSmoothPathAsync
CreatePath
Parametri
| Valore predefinito: "nil" |
Restituzioni
Campioni di codice
Creare un percorso con il servizio Pathfinding
local Workspace = game:GetService("Workspace")
local PathfindingService = game:GetService("PathfindingService")
-- Questo modello contiene un inizio, una fine e tre percorsi su cui il giocatore può camminare: Neve, Metallo e ErbaFoglia
local PathOptionsModel = script.Parent.PathOptions
local startPosition = PathOptionsModel.Start.Position
local finishPosition = PathOptionsModel.End.Position
-- Crea un percorso che evita i materiali Neve e Metallo
-- Questo garantirà che il percorso creato eviti i percorsi di Neve e Metallo e guidi
-- l'utente verso il percorso di ErbaFoglia
local path = PathfindingService:CreatePath({
AgentRadius = 3,
AgentHeight = 6,
AgentCanJump = false,
Costs = {
Snow = math.huge,
Metal = math.huge,
},
})
-- Calcola il percorso
local success, errorMessage = pcall(function()
path:ComputeAsync(startPosition, finishPosition)
end)
-- Conferma che il calcolo sia andato a buon fine
if success and path.Status == Enum.PathStatus.Success then
-- Per ogni waypoint, crea un elemento per visualizzare il percorso
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(`Impossibile calcolare il percorso, errore: {errorMessage}`)
endFindPathAsync