Path
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
เส้นทาง วัตถุเก็บผลของเส้นทางที่สร้างโดย PathfindingService:CreatePath()
เมื่อวัตถุเส้นทา
นอกจาก ComputeAsync() แล้วยังมีวัตถุ Path ที่มีวิธีการ GetWaypoints() ซึ่งสร้างรายการของวิธีการที่เป็นตัวแทนของตัวละครที่ติ
ในที่สุด, Path วัตถุสามารถเชื่อมต่อได้กับเหตุการณ์ Class.Path.Blocked เหตุการณ์นี้จะเกิดขึ้นหากเส้นทางถูกบล็อกใด ๆ ในระหว่างการเดิ
สรุป
คุณสมบัติ
ความสำเร็จของ Path ที่สร้าง
วิธีการ
กลับรายการจุดในเส้นทาง
ตรวจสอบว่ามีเส้นทางถูกบล็อกจากจุดเริ่มต้นที่กำหนดหรือไม่
คํานวณ Path จากตําแหน่งเริ่มต้นไปยังตําแหน่งสิ้นสุด
อีเวนต์
เกิดขึ้นเมื่อเส้นทางที่คำนวณได้กลายเป็นบล็อก
เกิดขึ้นเมื่อเส้นทางที่คำนวณได้ที่ปิดการปิดกั้นกลายเป็นเปิดการปิดกั้น
คุณสมบัติ
วิธีการ
GetWaypoints
ฟังก์ชันนี้กลับรายการของทั้งหมด PathWaypoints ใน Path โดยคำนวณโดย Path:ComputeAsync()
แต่ละจุดหมายในแมทริคกำหนดตำแหน่ง Vector3 และ action เมื่อได้รับ PathWaypoint นี้ ปิด
หากไม่สามารถคำนวณเส้นทางได้ ฟังก์ชันนี้จะกลับค่ารายการที่ว่างเปล่า
ส่งค่ากลับ
Datatype.PathWaypoint|PathWaypoints ปิด
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ตรวจสอบว่ามีเส้นทางถูกบล็อกเริ่มต้นที่ เริ่ม ระบุ
มันกลับระยะที่หนึ่งของการปิดกั้นหากบล็อก, -1 หากไม่, มันกลับระยะที่หนึ่งของการปิดกั้นใน Path มีจำนวนเส้นทางเดินมากกว่า 0 หรือมากกว่าจำนวนเส้นทางเดินใน Class.Path นี้.
พารามิเตอร์
ส่งค่ากลับ
ComputeAsync
ฟังก์ชันนี้คํานวณ Class.Path จากตําแหน่งเริ่มต้นไปยังตําแหน่งสิ้นสุด ฟังก์ชันนี้ไม่ได้เรียกอัตโนมัติเมื่อเส้นทางถูกสร้างและต้องการให้เรียกทุกครั้งเมื่อเส้นทางต้องการอัปเดต
เมื่อเส้นทางถูกคำนวณจะมีตรวจทางต่างๆ ที่เมื่อติดตามจะสามารถนำตัวละครไปตามเส้นทางได้ จุดเหล่านี้รวบรวมด้วยฟังก์ชัน Path:GetWaypoints()
พารามิเตอร์
ตำแหน่งโลกที่เส้นทางที่คํานวณได้เริ่มต้น
ตำแหน่งโลกที่เส้นทางที่คํานวณได้จบลง
ส่งค่ากลับ
ตัวอย่างโค้ด
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)
อีเวนต์
Blocked
เปิดให้เมื่อเส้นทางที่คำนวณได้กลายเป็นบล็อก หมายเหตุว่าเส้นทางอาจกลายเป็นบล็อกที่ใดบางที่ เช่น กองกรวดตกบนเส้นทางเมื่อเอเจนต์วิ่งออกไป ดู การจัดการเส้นท
พารามิเตอร์
Unblocked
เปิดให้เมื่อเส้นทางที่คำนวณได้ที่ถูกบล็อกกลายเป็นไม่บล็อก หมายเหตุว่าเส้นทางที่ถูกบล็อกอาจกลายเป็นไม่บล็อกที่ใด ๆ ภายในเวลา หลัง ตัวเอเจนต์ ดู การ