Path
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Pfad-Objekte speichern das Ergebnis von Pfaden, die von Class.PathfindingService:CreatePath() erstellt wurden.
Sobald ein Pfad-Objekt erstellt ist, können Sie
Zusätzlich zu ComputeAsync() , Path Objekte haben die GetWaypoints() Methode, die eine Liste von Waypoints zurückgibt, die die Punkte eines Charakters in der Reihenfolge folgen, um vom Anfang bis zum Ende des Pfades zu gelangen.
Schließlich können Path Objekte mit dem Class.Pfad.Blocked -Ereignis verbunden werden. Dieses Ereignis wird ausgelöst, wenn sich der Weg während der Path-Existenz jederzeit blockiert. Beachten Sie, dass dies Path.Blocked einem Charakter, der entlang des Wegs bewegt wird, nicht nur vor dem Blockaden.
Zusammenfassung
Eigenschaften
Der Erfolg der generierten Path.
Methoden
Kehre ein Array von Punkten im Pfad zurück.
Überprüft, ob ein Weg ab einem bestimmten Wegpunkt blockiert wird.
Berechnet einen Path von einer Startposition zu einer Endposition.
Ereignisse
Feuert, wenn der berechnete Pfad blockiert wird.
Feuert, wenn ein berechenbarer Weg, der blockiert wurde, entblockt wird.
Eigenschaften
Methoden
GetWaypoints
Diese Funktion gibt ein Array von allen PathWaypoints in einem Path zurück, wie berechnet von Path:ComputeAsync().
Jeder Wegpunkt in der Matrix spezifiziert eine Position Vector3 und eine action , die zu nehmen ist, wenn dieser PathWaypoint erreicht wird. Die Matrix wird in der Reihenfolge der Wegpunkte vom Start des Wegs bis zum beendendes Wegs sortiert.
Wenn ein Weg nicht berechenbar war, gibt diese Funktion eine leere Arrayzurück.
Rückgaben
Ein Array von PathWaypoints , der vom Start des Weges bis zum beendendes Weges sortiert ist.
Code-Beispiele
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
Diese Funktion prüft, ob ein Wegblock auf dem angegebenen Wegpunkt start blockiert wird.
Es gibt die erste Blockierungs-Waypoint-Return, wenn blockiert, -1, wenn nicht. es gibt einen Fehler zurück, wenn start weniger als 0 oder größer als die Anzahl der Waypoints in der Path .
Parameter
Rückgaben
ComputeAsync
Diese Funktion berechnet einen Path von einer Startposition zu einer Endposition. Diese Funktion wird nicht automatisch aufgerufen, wenn ein Weg erstellt wird, und muss jedes Mal aufgerufen werden, wenn der Weg aktualisiert werden muss.
Sobald der Pfad berechnet ist, wird er eine Reihe von Wegpunkten haben, die, wenn sie gefolgt werden, einen Charakter entlang des Pfades führen können. Diese Punkte werden mit der Path:GetWaypoints() Funktion gesammelt.
Parameter
Die Weltposition, in der der berechnete Pfad beginnt.
Die Weltposition, in der der berechnete Pfad endet.
Rückgaben
Code-Beispiele
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)
Ereignisse
Blocked
Feuert, wenn der berechnete Pfad blockiert wird. Beachten Sie, dass Pfade möglicherweise irgendwo hinter dem Agent blockiert werden, wie z. B. ein Haufen Trümmer, der auf einem Pfad fällt, während der Agent wegläuft. Siehe Handling Blocked Paths für Details zum Überprüfen des Fortschritts des Blocked Ways auf einem Pfad.
Parameter
Unblocked
Feuert, wenn ein berechenbarer Weg, der blockiert wurde, zu einem nicht blockierten Weg geworden ist. Beachten Sie, dass ein blockierter Weg möglicherweise in einem hinter dem des Agenten, effektiv Reaktion auf dieses Ereignis unnötig macht. Siehe Handling Blocked Paths für Details zum Prüfen des Fortschritts des Reaktionspunkts eines Agenten entlang eines Wegs.