Path
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Path objek menyimpan hasil rute yang dibuat oleh PathfindingService:CreatePath() .
Setelah objek jalan dibuat, And
Selain ComputeAsync() , Path objek memiliki metode GetWaypoints() yang mengembalikan daftar waypoint yang mewakili titik yang harus diikuti dalam urutan untuk mendapatkan dari awal ke akhir jalur.
Akhirnya, Path objek dapat dihubungkan ke acara Class.Jalur.Blocked . Acara ini akan diaktifkan jika, kapan pun selama eksistensi jalan, jalan diblokir. Catat bahwa ini dapat terjadi Path.Blocked karakter yang bergerak di sepanjang jalan, bukan hanya di depan.
Rangkuman
Properti
Kesuksesan dari Path yang dihasilkan.
Metode
Mengembalikan array poin di jalan.
Memeriksa apakah jalan diblokir dimulai dari titik pemantangan tertentu.
Menghitung jalan Path dari posisi awal ke posisi akhir.
Acara
Dibakar saat jalan yang dihitung menjadi diblokir.
Berapi-api saat jalan yang dihitung yang diblokir menjadi tidak diblokir.
Properti
Metode
GetWaypoints
Fungsi ini mengembalikan matriks untuk semua PathWaypoints dalam Class.Jalur , seperti yang dihitung oleh Path .
Setiap waypoint dalam array menentukan posisi Vector3 dan action untuk diambil ketika PathWaypoint ini dicapai. Array diatur dalam urutan waypoints dari awal jalan hingga akhirijalan.
Jika jalan tidak dapat dihitung, fungsi ini akan mengembalikan array yang kosong.
Memberikan nilai
Sebuah matriksi dari PathWaypoints yang diurutkan dari awal jalan sampai ujung jalan.
Contoh Kode
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
Fungsi ini memeriksa apakah jalan diblokir dimulai dari titik awal yang ditunjuk oleh mulai .
Ini mengembalikan poin awal pemblokiran jika diblokir, -1 jika tidak. itu mengembalikan kesalahan jika mulai kurang dari 0 atau lebih besar dari jumlah poin pemblokiran dalam Path .
Parameter
Memberikan nilai
ComputeAsync
Fungsi ini menghitung Path dari posisi awal ke posisi akhir. Fungsi ini tidak otomatis dipanggil ketika jalan setapak dibuat dan harus dipanggil setiap kali jalan setapak perlu diperbarui.
Setelah Jalan dihitung, itu akan memiliki serangkaian waypoint yang, ketika diikuti, dapat membawa karakter di jalan. Points ini dikumpulkan dengan fungsi Path:GetWaypoints().
Parameter
Posisi dunia di mana jalan yang dihitung dimulai.
Posisi dunia di mana jalan yang dihitung selesai.
Memberikan nilai
Contoh Kode
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)
Acara
Blocked
Diaktifkan ketika jalan yang dihitung menjadi diblokir. Catat bahwa jalan mungkin menjadi diblokir di suatu tempat di belakang agen, seperti tumpukan reruntuhan jatuh di jalan saat agen berlari menyebrang. Lihat Menangani Jalan Terkunci untuk detail tentang memeriksa kemajuan jalan depan agen di sepanjang jalan.
Parameter
Unblocked
Mengaktifkan ketika jalan yang dihitung yang diblokir menjadi tidak diblokir. Catat bahwa jalan yang diblokir mungkin menjadi tidak diblokir di suatu tempat di belakang agen, secara efektif membuat reaksi terhadap acara ini tidak diperlukan. Lihat Menangani Jalan yang Diblokir untuk detail tentang memeriksa kemajuan jalan yang diblokir sepanj