Path
*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.
Ś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
Udane generowanie Path .
Metody
Zwraca maszynę czasową w postaci arkusza.
Sprawdza, czy droga jest blokowana na początku określonego punktu.
Oblicza Path z początkowej pozycji do końcowej pozycji.
Zdarzenia
Wystrzela, gdy stanie się zablokowana droga obliczona.
Wystrzela, gdy wyznaczony przez Ciebie zapatryzowany ścieżka staje się odblokowana.
Właściwości
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
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
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
Zwroty
ComputeAsync
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
Pozycja świata, w której rozpoczyna się obliczona ścieżka.
Pozycja świata, w której kończy się obliczony ścieżka.
Zwroty
Przykłady kodu
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
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.