Path

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Çoğaltılmamış

Yol nesneleri, PathfindingService:CreatePath() tarafından oluşturulan yolların sonucunu depolar.

Bir yol nesnesi oluşturulduktan sonra, başlangıç noktası ve bitiş noktası ile Path:ComputeAsync() çağırabilirsiniz.Bu, bir karakterin hareket etmesi için geçerli bir yol hesaplamaya çalışacaktır, varsayılan veya özel olarak geçirilen CreatePath() parametrelere dayanarak.Eğer başarılı bir şekilde bir yol bulursa, nesnesinin bir değeri olacak .Aksi takdirde durum Enum.PathStatus.NoPath olacaktır, ki bu iki nokta arasında engeller varsa (ve etrafında bir yol yoksa) veya noktalar katı nesnelerin içindeyse.

ComputeAsync() 'nin yanı sıra, Path nesnelerinin bir yol noktaları listesini döndüren GetWaypoints() yöntemi, bir karakterın yolun başından sonuna ulaşması gereken noktaları temsil eden bir listeye sahiptir.

Son olarak, Path nesneleri bağlanabilir etkinliğe Path.Blocked bağlanabilir.Bu olay, yolun varlığı sırasında herhangi bir zamanda yol engellenirse ateşlenecektir.Bunun yol boyunca hareket eden bir karakterin arkasında gerçekleşebileceğini unutmayın, sadece önünde değil.

Özet

Yöntemler

Etkinlikler

Özellikler

Salt Okunur
Çoğaltılmamış
Paralel oku

Oluşturulan Path 'in başarısı.

Yöntemler

GetWaypoints

Bu işlev tüm PathWaypoints 'in bir Path 'deki bir dizi döndürür, çünkü Path:ComputeAsync() tarafından hesaplanır.

Dizideki her bir yol noktası bir Vector3 konumunu ve bu Yol Noktasına ulaşıldığında alınacak action konumu belirtir.Dizgi yol noktalarından yol sonuna doğru sıralanır. The array is arranged in the order of waypoints from the path start to path bitir.

Bir yol hesaplanamadıysa, bu işlev boş bir dizi döndürecektir.


Dönüşler

Yol başından yola bitirdoğru sıralanmış bir dizi PathWaypoints .

Kod Örnekleri

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

Bekletir

Bu işlev, yol noktası tarafından belirtilen yoldan başlayarak bir yol engellendiğini kontrol eder başlat .

Kapatıldığında ilk gizleme noktasını döndürür, değilse -1.eğer başlangıç ​​ 0'dan az veya Path daha az ise bir hata döndürür.

Parametreler

start: number
Varsayılan değer: ""

Dönüşler

ComputeAsync

()
Bekletir

Bu işlev, bir başlangıç pozisyonundan bir son pozisyona kadar bir Path hesaplar.Bu işlev, bir yol oluşturulduğunda otomatik olarak çağrılmaz ve yol güncellenmesi gerektiğinde her seferinde çağrılmalıdır.

Yol hesaplandıktan sonra, izlendiğinde bir karakteri yol boyunca yönlendirebilecek bir dizi yol noktasına sahip olacaktır.Bu noktalar Path:GetWaypoints() işlevi ile toplanır.

Parametreler

start: Vector3

Hesaplanan yolun başladığı dünya konumu.

Varsayılan değer: ""
finish: Vector3

Hesaplanan yolun bitiş yeri dünya konumu.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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)

Etkinlikler

Blocked

Hesaplanan yol engellendiğinde ateş eder.Yolların bir yerde engellenebileceğini unutmayın arka planda bir yol üzerinde düşen bir çöp yığını gibi, bir ajan kaçarken.Bir yol boyunca bir ajanın ileri yol noktası ilerlemesini kontrol etmek için ayrıntıları Kapalı Yolları Ele Alma için görünüz.

Parametreler

blockedWaypointIdx: number

Unblocked

Bloklanmış bir hesaplanmış yol engellendiğinde ateş eder.Engellenmiş bir yolun bir yerden engellenmesinin kaldırılabileceğini unutmayın arka plandaki ajanın, bu etkiye karşı tepki gereksiz hale getirecek şekilde etkisiz hale gelebilir.Bir yol boyunca bir ajanın ileri yol noktası ilerlemesini kontrol etmek için ayrıntıları Kapalı Yolları Ele Alma için görünüz.

Parametreler

unblockedWaypointIdx: number