Path

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Nicht repliziert

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

Methoden

Ereignisse

Eigenschaften

Schreibgeschützt
Nicht repliziert
Parallel lesen

Der Erfolg der generierten Path.

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

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

Angehalten

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

start: number

Rückgaben

ComputeAsync

void
Angehalten

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

start: Vector3

Die Weltposition, in der der berechnete Pfad beginnt.

finish: Vector3

Die Weltposition, in der der berechnete Pfad endet.


Rückgaben

void

Code-Beispiele

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)

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

blockedWaypointIdx: number

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.

Parameter

unblockedWaypointIdx: number