Path
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Path objects lưu kết quả của các con đường đã tạo bởi PathfindingService:CreatePath() .
Một khi một đối t
Ngoài ra, ComputeAsync() , Path đối tượng có phương thức GetWaypoints() để trả lại một danh sách các điểm dẫn đến một danh sách các điểm đại diện cho một nhân vậ
Cuối cùng, Path đối tượng có thể được kết nối với sự kiện Class.Path.Blocked . Sự kiện này sẽ bắt đầu khi, bất cứ lúc nào trong quá trình tồn tại của con đường, con đường đã bị chặn
Tóm Tắt
Thuộc Tính
Sự thành công của Path đã tạo.
Phương Pháp
Trả một dàn số trong đường dẫn.
Kiểm tra xem một con đường bị chặn khởi đầu tại một điểm dừng riêng.
Tính to Path từ vị trí xuất phát đến vị trí cuối cùng.
Sự Kiện
Lửa khi con đường tính toán trở nên bị chặn.
Lửa khi một con đường đã được tính toán trở nên bị mở khóa.
Thuộc Tính
Phương Pháp
GetWaypoints
Hàm này trả về một loạt các PathWaypoints trong một Path , như được tính toán bởi Path:ComputeAsync() .
Mỗi điểm dừng trong mảng đều đặn một vị trí Vector3 và action để lấy khi điểm dừng này được đạt được. Mảng được sắp xếp theo thứ tự các điểm dừng từ đầu đường đến kết thúcđường.
Nếu một con đường không thể được tính toán, hàm này sẽ trả lại một danh sách trống.
Lợi Nhuận
Một dàn PathWaypoints được sắp xếp từ đầu con đường đến kết thúc.
Mẫu mã
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
Hàm này kiểm tra xem một con đường đã bị chặn khởi đầu tại điểm dừng bắt đầu .
Nó trả về điểm dừng đầu tiên của occlusive nếu bị chặn, -1 nếu không. nó trả về một lỗi nếu bắt đầu nhỏ hơn 0 hoặc lớn hơn số lượng của các điểm dừng trong Path .
Tham Số
Lợi Nhuận
ComputeAsync
Hàm này tính toán một Path từ một vị trí xuất phát đến một vị trí cuối cùng. Hàm này không được gọi tự động khi một con đường được tạo và phải được gọi mỗi lần con đường cần được cập nhật.
Khi con đường được tính, nó sẽ có một loạt các điểm dừng chân mà, khi được theo, có thể dẫn một nhân vật trên con đường. Các điểm này được thu thập với chức năng Path:GetWaypoints().
Tham Số
Vị trí thế giới mà con đường tính toán bắt đầu.
Vị trí thế giới mà con đường tính toán kết thúc.
Lợi Nhuận
Mẫu mã
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)
Sự Kiện
Blocked
Khi con đường đã được tính toán bị chặn. Ghi chú rằng con đường có thể bị chặn ở một nơi nào đó sau khu vực mà agen chạy, ví dụ như một đống đá rơi xuống con đường khi agen chạy đi. Xem Xử lý con đường bị chặn để tham k
Tham Số
Unblocked
Khi một con đường đã được tính toán bị chặn bị mở ra, lưu ý rằng một con đường bị chặn có thể bị mở ra ở một nơi sau agen, hiệu quả làm cho phản ứng đối với sự kiện này không cần thiết. Xem Xử lý đường đi bị chặn để