Path

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Tidak Direplikasi

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

Metode

Acara

Properti

Hanya Baca
Tidak Direplikasi
Baca Paralel

Kesuksesan dari Path yang dihasilkan.

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

Get Path Waypoints

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

Hasil

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

start: number

Memberikan nilai

ComputeAsync

void
Hasil

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

start: Vector3

Posisi dunia di mana jalan yang dihitung dimulai.

finish: Vector3

Posisi dunia di mana jalan yang dihitung selesai.


Memberikan nilai

void

Contoh Kode

Using the Pathfinding Service

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

blockedWaypointIdx: number

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

Parameter

unblockedWaypointIdx: number