PathfindingService
*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 Geliştirme Hizmeti kullanılarak, karakterlerin duvarlara veya diğer engellerle çarpışmadan iki nokat arasındaki mantıksal yolları bulunur. Standart olarak, en kısa yol hesaplanır, ancak yol görünüm modifikatörlerini kullanarak, daha akıllı yolları çeşitli malzemeler, belirli bölgeler veya engeller aracılığıyla gerçekleştirebil
Ayrıntılar için Karakter Yol Gösterme bakın.
Özellikler
Yöntemler
CreatePath
Çeşitli ajan parçalarına dayanan bir Path nesnesi oluşturur. Geçerli anahtarlar ve değerler agentParameters tabelasındaki gibidir:
<tbody><tr><td><b>AjanRadiusı</b></td><td>sayı</td><td>2</td><td>Boş alanın geçerli olması için gerekli minimum yer kapasitesini belirler.</td></tr><tr><td><b>AjanYüksekliği</b></td><td>sayı</td><td>5</td><td>Boş alanın geçerli olması için gerekli minimum yerleşik alanı belirler.</td></tr><tr><td><b>AjanCanJump</b></td><td>boo</td><td>doğru</td><td>Yol bulma sırasında zıplamanın izin verilip etkinleştirileceğini belirler.</td></tr><tr><td><b>AjanTırmanabilir</b></td><td>boo</td><td>yanlış</td><td>Yol bulma sırasında <code>Class.TrussPart|TrussParts</code> ı tırmanma izin verildiğini belirler.</td></tr><tr><td><b>Yol Gecikme</b></td><td>sayı</td><td>4</td><td>Yolunuzun orta noktaları arasındaki boşlukları belirler.</td></tr><tr><td><b>Fiyatları</b></td><td>masa</td><td></td><td>Malzeme tablosu veya <code>Class.Pathfindingmodified|PathfindingModifiers</code> ve onların "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol" için "yol"</td></tr></tbody>
Anahtar | Tür | Varsayılan | Açıklama |
---|
Parametreler
Yolunuzun ajanın boyutu için küçük ayarlanabilir yapısı olan Lua tablosu (yolunuzun boyutu boyunca hareket edecek olan insanoid). Aşağıda, geçerli anahtarlar, türler ve açıklamalar için görünür.
Dönüşler
Kod Örnekleri
local Workspace = game:GetService("Workspace")
local PathfindingService = game:GetService("PathfindingService")
-- This model contains a start, end and three paths between the player can walk on: Snow, Metal and LeafyGrass
local PathOptionsModel = script.Parent.PathOptions
local startPosition = PathOptionsModel.Start.Position
local finishPosition = PathOptionsModel.End.Position
-- Create a path that avoids Snow and Metal materials
-- This will ensure the path created avoids the Snow and Metal paths and guides
-- the user towards the LeafyGrass path
local path = PathfindingService:CreatePath({
AgentRadius = 3,
AgentHeight = 6,
AgentCanJump = false,
Costs = {
Snow = math.huge,
Metal = math.huge,
},
})
-- Compute the path
local success, errorMessage = pcall(function()
path:ComputeAsync(startPosition, finishPosition)
end)
-- Confirm the computation was successful
if success and path.Status == Enum.PathStatus.Success then
-- For each waypoint, create a part to visualize the path
for _, waypoint in path:GetWaypoints() do
local part = Instance.new("Part")
part.Position = waypoint.Position
part.Size = Vector3.new(0.5, 0.5, 0.5)
part.Color = Color3.new(1, 0, 1)
part.Anchored = true
part.CanCollide = false
part.Parent = Workspace
end
else
print(`Path unable to be computed, error: {errorMessage}`)
end
FindPathAsync
Bu işlev, iki sağlanan nokta arasında bir Path bulmak için kullanılır. Bu yol, PathfindingService tarafından oluşturulan Navigasyon Kümesi'ni kullanır ve düzenli bir Roblox karakteri tarafından izlenebileceğinden emin olur.
Bu işlev, Path bir nesne döndürür ki bu yolun koordinatlarını içerir. Eğer iki nokta arasında bir yol bulunmazsa, bu işlev hala bir Path nesnesi döndürür, ancak bu nesnenin Path.Status kısmı 1> Enum.PathStatus.NoPath</
Class.Path nesnelerinin yol noktalarını almak için, Path:GetWaypoints() işlevini kullanabilirsiniz.