Path

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Bez replikacji

Ścieżka obiekty przechowują wynik ścieżek stworzonych przez PathfindingService:CreatePath() .

Gdy obiekt ścieżki jest utworzony, mo

Oprócz ComputeAsync() , Path obiekty mają metodę GetWaypoints(), która zwraca listę punktów przedstawiających sposób, który znak postępuje w kolejności, aby uzyskać od początku do końca drogi.

Wreszcie obiekty Path mogą być łączone Class.Path.Blocked do wydarzenia Path.Blocked. Wydarzenie to zostanie uruchomione, jeśli w dowolnym momencie podczas istnienia drogi blokuje się. Uwaga, że to może nastąpić 2>za2> znakiem postępującego po drodze, nie tylko przed nim.

Podsumowanie

Właściwości

Metody

Zdarzenia

Właściwości

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Udane generowanie Path .

Metody

GetWaypoints

Funkcja ta zwraca wszystkie PathWaypoints w Path , jako wynik Path:ComputeAsync().

Każdy waypoint w matrycy określa pozycję Vector3 i action do podjęcia, gdy ten Waypoint Pathway dotrze. Matryca jest ułożona w kolejności waypoints od początku drogi do kończyć.

Jeśli nie udało się obliczyć ścieżki, funkcja ta zwraca pustą matrycę.


Zwroty

Materiały PathWaypoints zapisane od początku drogi do kończyćdrogi.

Przykłady kodu

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

Wynik

Funkcja ta sprawdza, czy droga jest zablokowana, zaczynając od wskazanego przez początek drogi.

Wyświetla pierwszy punkt końcowy blokady, jeśli jest zablokowany, -1 jeśli nie. Wyświetla błąd, jeśli początek jest mniejszy niż 0 lub większy niż liczba punktów końcowych w Path .

Parametry

start: number

Zwroty

ComputeAsync

void
Wynik

Funkcja ta oblicza Path z początkowej pozycji do końcowej pozycji. Ta funkcja nie jest automatycznie wzywana, gdy droga jest tworzona i musi być wzywana za każdym razem, gdy droga musi być aktualizowana.

Gdy droga zostanie obliczona, będzie miała serię waypointów, które, podążając za ną, mogą prowadzić postać po drodze. Te punkty są zbierane z funkcji Path:GetWaypoints().

Parametry

start: Vector3

Pozycja świata, w której rozpoczyna się obliczona ścieżka.

finish: Vector3

Pozycja świata, w której kończy się obliczony ścieżka.


Zwroty

void

Przykłady kodu

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)

Zdarzenia

Blocked

Występuje, gdy kalkulowany ścieżka staje się zablokowana. Zauważ, że ścieżki mogą zostać zablokowane gdzieś poza agentem, tak jak kupa rublu spadająca na ścieżkę, gdy agencja ucieka. Zobacz Przyczepienie zablokowanych ścieżek dla szczegółów na sprawdzenie postępu kalkulowanego ścieżki przez agencję na ścieżce.

Parametry

blockedWaypointIdx: number

Unblocked

Wykonuje się, gdy wyznaczony przez siebie ścieżka, która została zablokowana, staje się odblokowany. Uwaga, że zablokowana ścieżka może zostać odblokowana gdzieś po stronie agenta, co skutkuje niepotrzebną reakcją na ten ewent. Patrz Przyczyny zacięcia ścieżki po stronie agencji w ścieżce.

Parametry

unblockedWaypointIdx: number