Path

Hiển Thị Bản Đã Lỗi Thời

*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.

Không Thể Tạo
Không Sao Chép

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

Phương Pháp

Sự Kiện

Thuộc Tính

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Sự thành công của Path đã tạo.

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í Vector3action để 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ã

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

Sinh Lợi

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ố

start: number

Lợi Nhuận

ComputeAsync

void
Sinh Lợi

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ố

start: Vector3

Vị trí thế giới mà con đường tính toán bắt đầu.

finish: Vector3

Vị trí thế giới mà con đường tính toán kết thúc.


Lợi Nhuận

void

Mẫu mã

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)

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ố

blockedWaypointIdx: number

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 để

Tham Số

unblockedWaypointIdx: number