PathfindingService

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
Hizmet
Çoğaltılmamış

Yol bulma hizmeti iki nokta arasında mantıksal yollar bulmak için kullanılır, böylece karakterler duvarlara veya diğer engellere çarpmadan noktalar arasında hareket edebilir.Varsayılan olarak, en kısa yol hesaplanır, ancak çeşitli materyaller, tanımlanmış bölgeler veya engeller aracılığıyla daha akıllı yolları hesaplamak için yol bulma modifiyerlerini uygulayabilirsiniz.

Kullanım ayrıntıları için Karakter Yol Bulma'yı görün.

Özellikler

Yöntemler

CreatePath

Çeşitli ajan parametlerine dayanarak bir Path nesnesi oluşturur. agentParameters tablosundaki geçerli anahtarlar ve değerler şöyledir:


<th>Tür</th>
<th>Varsayılan</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Ajan Yarıçapı</b></td>
<td>sayısal</td>
<td>2</td>
<td>Boş alanın gezilebilir olarak kabul edilmesi için gerekli minimum yatay alanı belirler.</td>
</tr>
<tr>
<td><b>Ajan Yüksekliği</b></td>
<td>sayısal</td>
<td>5</td>
<td>Boş alanın gezilebilir olarak kabul edilmesi için gerekli minimum yatay alanı belirler.</td>
</tr>
<tr>
<td><b>AjanZıplayabilir</b></td>
<td>boşluklı</td>
<td>doğru</td>
<td>Yol bulma sırasında atlamanın izin verilip verilmediğini belirler.</td>
</tr>
<tr>
<td><b>AjanTırmanabilir</b></td>
<td>boşluklı</td>
<td>sahte</td>
<td>Yol bulma sırasında <code>Class.TrussPart|TrussParts</code> tırmanmaya izin verilip verilmediğini belirler.</td>
</tr>
<tr>
<td><b>Yol Noktası Boşluğu</b></td>
<td>sayı</td>
<td>4</td>
<td>Yol üzerindeki orta yol noktaları arasındaki boşluğu belirler.</td>
</tr>
<tr>
<td><b>Maliyetler</b></td>
<td>tablo</td>
<td>{}</td>
<td>Malzeme tablosu veya tanımlanmış <code>Class.PathfindingModifiedor|PathfindingModifiers</code> ve yol geçişi için "maliyeti".Ajanın belirli materyalleri/bölgeleri diğerlerinden tercih etmesini sağlamak için yararlı.Ayrıntılar için <a href="../../../characters/pathfinding.md#pathfinding-modifiers">buraya</a> bakın.</td>
</tr>
</tbody>
Anahtar

Parametreler

agentParameters: Dictionary

Yolun büyüklüğü için ayar yapmanıza izin veren Luau tablosu (yol boyunca hareket edecek insansız),Geçerli anahtarlar, türler ve açıklamalar için yukarıya bakın.

Varsayılan değer: "nil"

Dönüşler

Bir Path nesne.

Kod Örnekleri

Demonstrates creating a path using PathfindingService:CreatePath()

'PathOptions' represents a Model with three paths made of different materials. When creating the path we define a large 'Cost' for two of the three paths materials. This will ensure the path created steers towards the path with the material of the lowest 'Cost'.

Once the path is created, small parts are created at each waypoint to visualize the path.

Creating a Path with Pathfinding Service

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

Bekletir

Bu işlev, verilen iki nokta arasında bir Path.Bu yol, PathfindingService tarafından oluşturulan navigasyon ızgarasını kullanır ve yolun düzenli bir Roblox karakteri tarafından takip edilebildiğinden emin olur.

Bu işlev, yolun koordinatlarını içeren bir Path nesnesi döndürür.Eğer iki nokta arasında bir yol bulunmazsa, bu işlev hala bir Path nesnesi döndürecek, ancak bu nesnenin Path.Status 'i olacak Enum.PathStatus.NoPath .

Bir Path nesnenin yol noktalarını almak için, Path:GetWaypoints() işlevini kullanabilirsiniz.

Parametreler

start: Vector3

Yol başlangıç koordinatları.

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

Yol biti koordinatları.

Varsayılan değer: ""

Dönüşler

Bir Path nesne.

Etkinlikler