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 zostanie utworzony, możesz wezwać Path:ComputeAsync() z punktem startowym i punktem końcowym.Będzie to próba obliczenia ważnej ścieżki dla postaci, którą może przejść, w oparciu o domyślne lub niestandardowe parametry przekazane do CreatePath() .Jeśli pomyślnie znajdzie ścieżkę, obiekt będzie miał wartość .W przeciwnym razie status będzie wynosił Enum.PathStatus.NoPath, który może wystąpić, jeśli istnieją przeszkody między dwoma punktami (i nie ma sposobu na obejście) lub jeśli punkty znajdują się w obiektach stałych.
Oprócz ComputeAsync() obiekty Path mają metodę GetWaypoints(), która zwraca listę punktów drogi reprezentujących punkty, którymi powinien podążać postać, aby dostać się od początku do końca ścieżki.
Wreszcie obiekty Path mogą być połączone z wydarzeniem Path.Blocked.To wydarzenie zostanie uruchomione, jeśli w dowolnym momencie podczas istnienia ścieżki ścieżka zostanie zablokowana.Zauważ, że może to wystąpić za postacią poruszającą się wzdłuż ścieżki, nie tylko przed nią.
Podsumowanie
Właściwości
Sukces wygenerowanego Path .
Metody
Zwraca tablicę punktów na ścieżce.
Sprawdza, czy ścieżka jest zablokowana od określonego punktu orientacyjnego.
Oblicza Path z pozycji startowej do pozycji końcowej.
Zdarzenia
Wypala się, gdy zablokowana zostaje obliczona ścieżka.
Wybucha, gdy zablokowana ścieżka obliczeniowa zostaje odblokowana.
Właściwości
Metody
GetWaypoints
Funkcja ta zwraca tablicę wszystkich PathWaypoints w Path , obliczoną przez Path:ComputeAsync() .
Każdy punkt w środku matrycy określa pozycję Vector3 i action do podjęcia, gdy ten punkt ścieżki zostanie osiągnięty.Matryca jest układana w kolejności punktów ścieżki od początku ścieżki do kończyćścieżki.
Jeśli nie można obliczyć ścieżki, ta funkcja zwróci pustą listę.
Zwroty
Zbiór PathWaypoints złożony od początku ścieżki do kończyćścieżki.
Przykłady kodu
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.
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 ścieżka jest zablokowana, zaczynając od punktu drogi wskazanego przez start .
Zwraca pierwszy punkt orientacyjny zablokowania, jeśli jest zablokowany, -1 jeśli nie.zwraca błąd, jeśli start jest mniejszy niż 0 lub większy niż liczba punktów drogi w Path.
Parametry
Zwroty
ComputeAsync
Funkcja ta oblicza Path z pozycji startowej do pozycji końcowej.Funkcja ta nie jest automatycznie wzywana, gdy powstaje ścieżka, i musi być uruchamiana za każdym razem, gdy ścieżka musi zostać zaktualizowana.
Gdy ścieżka zostanie obliczona, będzie miała szereg punktów docelowych, które, po przestrzeganiu, mogą poprowadzić postać wzdłuż ścieżki.Punkty te są gromadzone za pomocą funkcji Path:GetWaypoints().
Parametry
Pozycja na świecie, w której zaczyna się obliczana ścieżka.
Pozycja na świecie, w której kończy się obliczona ścieżka.
Zwroty
Przykłady kodu
The code sample below explores how to move an NPC along a more complex path or around obstacles. This is known as pathfinding.
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
Wypala się, gdy zablokowana zostaje obliczona ścieżka.Zauważ, że ścieżki mogą zostać zablokowane gdzieś za agentem , na przykład stos gruzu spadający po ścieżce, gdy agent ucieka.Zobacz Blokowane ścieżki obsługi dla szczegółów dotyczących sprawdzania postępu przepustki agenta wzdłuż ścieżki.
Parametry
Unblocked
Wybucha, gdy zablokowana ścieżka obliczeniowa zostaje odblokowana.Zauważ, że zablokowana ścieżka może zostać odblokowana gdzieś za agentem , co skutecznie czyni reakcję na to wydarzenie niepotrzebną.Zobacz Blokowane ścieżki obsługi dla szczegółów dotyczących sprawdzania postępu przepustki agenta wzdłuż ścieżki.