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

Weg Objekte speichern das Ergebnis von Pfaden, die von PathfindingService:CreatePath() erstellt wurden.

Sobald ein Wegobjekt erstellt wurde, kannst du Path:ComputeAsync() mit einem Startpunkt und einem Endpunkt aufrufen.Dies wird versuchen, einen gültigen Pfad für einen Charakter zu berechnen, den er entlang bewegt, basierend auf Standard- oder benutzerdefinierten Parametern, die an CreatePath() übergeben wurden.Wenn erfolgreich einen Weg findet, wird das Objekt einen Wert von haben.Ansonsten wird der Status Enum.PathStatus.NoPath sein, der auftreten kann, wenn es Hindernisse zwischen den beiden Punkten gibt (und keine Umgehungsmöglichkeit) oder wenn die Punkte in soliden Objekten sind.

Zusätzlich zu ComputeAsync() haben Path Objekte die Methode GetWaypoints(), die eine Liste von Wegpunkten zurückgibt, die die Punkte darstellen, die ein Charakter in der Reihenfolge folgen soll, um vom Anfang bis zum Ende des Weges zu gelangen.

Schließlich können Path verbinden mit dem Path.Blocked.Dieses Ereignis wird ausgelöst, wenn während der Existenz des Wegs zu jeder Zeit der Weg blockiert wird.Beachten Sie, dass dies hinter einem Charakter passieren kann, der sich entlang des Weges bewegt, nicht nur vor ihm.

Zusammenfassung

Eigenschaften

Methoden

Ereignisse

Eigenschaften

Schreibgeschützt
Nicht repliziert
Parallel lesen

Der Erfolg der generierten Path .

Methoden

GetWaypoints

Diese Funktion gibt eine Liste aller in einem zurück, wie berechnet von .

Jeder Wegpunkt in der Liste gibt eine Vector3 Position und action an, wenn dieser Wegpunkt erreicht wird.Die Liste wird in der Reihenfolge der Wegpunkte vom Wegstart bis zum beendenangeordnet.

Wenn ein Weg nicht berechnet werden konnte, gibt diese Funktion eine leere Arrayzurück.


Rückgaben

Ein Array von PathWaypoints, sortiert von Wegbeginn bis beenden.

Code-Beispiele

The example below demonstrates how to create a Path and it's PathWaypoints using the PathService.

It tries to Path:ComputeAsync() a path between two Vector3 positions, from pathStart to pathEnd. If a path is successfully created, indicated by it's Enum.PathStatus, the code block gets an array of its waypoints using Path:GetWaypoints(). Then, it loops through the array and prints each waypoint's position.

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 Weg blockiert ist, der vom angezeigten Wegpunkt start aus beginnt.

Es gibt die erste Wegpunkt der Verschlüsselung zurück, wenn blockiert, -1 wenn nicht.es gibt einen Fehler zurück, wenn start weniger als 0 oder größer als die Anzahl der Wegpunkte in der Path ist.

Parameter

start: number
Standardwert: ""

Rückgaben

ComputeAsync

()
Angehalten

Diese Funktion berechnet eine Path von einer Startposition bis 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 Weg berechnet wurde, wird er eine Reihe von Wegpunkten haben, die, wenn sie befolgt werden, einen Charakter auf dem Weg führen können.Diese Punkte werden mit der Path:GetWaypoints()-Funktion gesammelt.

Parameter

start: Vector3

Die Weltposition, an der der berechnete Weg beginnt.

Standardwert: ""
finish: Vector3

Die Weltposition, an der der berechnete Weg endet.

Standardwert: ""

Rückgaben

()

Code-Beispiele

The code sample below explores how to move an NPC along a more complex path or around obstacles. This is known as pathfinding.

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 Weg blockiert wird.Beachte, dass Wege irgendwo hinter dem Agenten blockiert werden können, z. B. ein Haufen Trümmer, der auf einem Weg fällt, während der Agent wegläuft.Siehe Verwaltung von blockierten Wegen für Details zur Überprüfung des Fortschritts des vorausgehenden Wegpunkts eines Agents entlang eines Weges.

Parameter

blockedWaypointIdx: number

Unblocked

Feuert, wenn ein berechneter Weg, der blockiert war, entblockt wird.Beachten Sie, dass ein blockierter Weg irgendwo hinter dem Agenten unblockiert werden kann, was die Reaktion auf dieses Ereignis effektiv unnötig macht.Siehe Verwaltung von blockierten Wegen für Details zur Überprüfung des Fortschritts des vorausgehenden Wegpunkts eines Agents entlang eines Weges.

Parameter

unblockedWaypointIdx: number