Path
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
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
Özellikler
Oluşturulan Path 'in başarısı.
Yöntemler
Yol üzerinde bir dizi nokta döndürür.
Belirli bir yol noktasından başlayarak bir yol engellendiğini kontrol eder.
Bir başlangıç pozisyonundan bir son pozisyona kadar bir Path hesaplar.
Etkinlikler
Hesaplanan yol engellendiğinde ateş eder.
Bloklanmış bir hesaplanmış yol engellendiğinde ateş eder.
Özellikler
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.
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
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
Dönüşler
ComputeAsync
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
Hesaplanan yolun başladığı dünya konumu.
Hesaplanan yolun bitiş yeri dünya konumu.
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.
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
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.