PathfindingService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
PathfindingService digunakan untuk menemukan jalan logik antara dua titik, menjamin bahwa karakter dapat bergerak di antara titik tanpa menabrak dinding atau rintangan lainnya. Secara default, jalan paling pendek dihitung, tetapi Anda dapat mengaktifkan modifikator jalan untuk menghitung jalan yang lebih pintar di berbagai bahan, di sekitar wilayah yang didefinis, atau melalui rintangan.
Lihat Pemetaan Karakter untuk detail penggunaan.
Rangkuman
Metode
Menemukan Path di antara dua poin yang disediakan.
Properti
Metode
CreatePath
Membuat objek Path berdasarkan berbagai parameter agen. Key dan nilai kunci dalam tabel agentParameters sebagai berikut:
<tbody><tr><td><b>AgentRadius</b></td><td>float</td><td>2</td><td>Mengukur jumlah ruang horisontal minimum yang diperlukan agar ruang kosong dianggap dapat dilalui.</td></tr><tr><td><b>Tinggi Agen</b></td><td>float</td><td>5</td><td>Mengidentifikasi jumlah ruang vertikal minimum yang dibutuhkan agar ruang kosong dianggap dapat dilalui.</td></tr><tr><td><b>AgentCanJump</b></td><td>boolean</td><td>benar</td><td>Menentukan apakah melompat selama pemetaan jalan diizinkan.</td></tr><tr><td><b>AgentCanClimb</b></td><td>boolean</td><td>benar</td><td>Menentukan apakah <code>Class.TrussPart|TrussParts</code> dapat diizinkan selama pemetaan jalan.</td></tr><tr><td><b>Pembersihan Titik Jalan</b></td><td>nomor</td><td>4</td><td>Mengukur jarak antara titik jalan tengah dalam path.</td></tr><tr><td><b>Biaya</b></td><td>tabel</td><td></td><td>Tabel material atau ditentukan <code>Class.Pathfindingmodified|PathfindingModifiers</code> dan "biayanya" untuk traversal. Berguna untuk membuat agen menyukai beberapa bahan/wilayah tertentu daripada yang lain. Lihat <a href="../../../characters/pathfinding.md#pathfinding-modifiers">di sini</a> untuk detail.</td></tr></tbody>
Kunci | Jenis | Standar | Deskripsi |
---|
Parameter
Tabel Lua yang memungkinkan Anda menyesuaikan jalan untuk ukuran agen (manusia yang akan bergerak di jalan). Lihat di atas untuk kunci, jenis, dan deskripsi yang valid.
Memberikan nilai
Contoh Kode
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
Fungsi ini digunakan untuk menemukan Path di antara dua poin yang disediakan. Jalan ini menggunakan jaringan navigasi yang dibuat oleh PathfindingService dan memastikan bahwa jalan ini dapat diikuti oleh karakter Roblox ukuran biasa.
Fungsi ini mengembalikan objek Path yang mengandung koordinat jalan. Jika tidak ada jalan yang ditemukan di antara kedua titik, fungsi ini masih akan mengembalikan objek Path, tetapi status Path.Status akan menjadi 1> Enum.PathStatus.NoPath1> .
Untuk mendapatkan waypoints dari objek Path, Anda dapat menggunakan fungsi Path:GetWaypoints().