PathfindingService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
PathfindingService wird verwendet, um logische Wege zwischen zwei Punkten zu finden, wodurch sich die Charaktere zwischen den Punkten bewegen können, ohne auf Wände oder andere Hindernisse zu stoßen. Standardmäßig wird der kürzeste Weg berechnet, aber Sie können Pathfinding-Modifikatoren implementieren, um schlauerere Wege über verschiedene Materialien, umgebende Regionen oder durch Hindernisse zu berechnen.
Siehe Charakter-Wegfindung für NutzungsDetails.
Zusammenfassung
Methoden
Findet einen Path zwischen den beiden angegebenen Punkten.
Eigenschaften
Methoden
CreatePath
Erstellt ein Path -Objekt basierend auf verschiedenen Agenten-Parametern. Gültige Schlüssel und Werte in der agentParameters -Tabelle sind wie folgt:
<tbody><tr><td><b>AgentRadius</b></td><td>ganzzahlig</td><td>2</td><td>Bestimmt die minimale Menge horizontalen Platzes, die für die Überquerbarkeit leerer Platzes erforderlich ist.</td></tr><tr><td><b>AgentHeight</b></td><td>ganzzahlig</td><td>5</td><td>Bestimmt die minimale Menge vertikal benötigten Platzes, die für leeren Raum betrachtet werden kann.</td></tr><tr><td><b>AgentCanJump</b></td><td>boolean</td><td>wahr</td><td>Bestimmt, ob das Springen während des Wegfindungsprozesses erlaubt ist.</td></tr><tr><td><b>AgentCanClimb</b></td><td>boolean</td><td>falsch</td><td>Bestimmt, ob das Klettern von <code>Class.TrussPart|TrussParts</code> während der Wegfindung erlaubt ist.</td></tr><tr><td><b>Wegpunkt-Platzierung</b></td><td>nummer</td><td>4</td><td>Bestimmt die Abstand zwischen den Wegpunkten in der Path.</td></tr><tr><td><b>Kostet</b></td><td>tabelle</td><td></td><td>Tabelle von Materialien oder definierten <code>Class.PathfindingModifier|PathfindingModifiers</code> und deren "Kosten" für die traversal. Nützlich für das Festlegen, dass der Agent bestimmte Materialien/Regionen über andere bevorzugt. Siehe <a href="../../../characters/pathfinding.md#pathfinding-modifiers">hier</a> für Details.</td></tr></tbody>
Schlüssel | Typ | Standard | Beschreibung |
---|
Parameter
Lua-Tabelle, mit der Sie die Path für die Größe des Agenten (des Menschenoiden, der entlang des Paths bewegt sich) fein abstimmen können. Siehe oben für gültige Schlüssel, Arten und Beschreibungen.
Rückgaben
Code-Beispiele
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
Diese Funktion wird verwendet, um ein Path zwischen zwei angegebenen Punkten zu finden. Dieser Weg verwendet das Navigationsnetz, das von PathfindingService erstellt wurde, und stellt sicher, dass der Weg von einem regulären-Size-Roblox-Charakter gefolgt werden kann.
Diese Funktion gibt ein Path -Objekt zurück, das die Koordinaten des Pfades enthält. Wenn kein Pfad zwischen den beiden Punkten gefunden wird, wird diese Funktion immer noch ein Path -Objekt zurückgeben, aber sein Path.Status wird als 2>Enumerate.PathStatus.NoPath2> zurückgegeben.
Um die Wegpunkte eines Path-Objekts zu erhalten, können Sie die Funktion Path:GetWaypoints() verwenden.