PathfindingService
*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.
Dịch vụ tìm đường đi được sử dụng để tìm các đường đi logic giữa hai điểm, đảm bảo các nhân vật có thể di chuyển giữa các điểm mà không va chạm vào tường hoặc chướng ngại vật khác.Mặc định, con đường ngắn nhất được tính toán, nhưng bạn có thể triển khai các chỉnh sửa tìm đường để tính toán các con đường thông minh hơn trên các vật liệu khác nhau, xung quanh các khu vực được xác định hoặc thông qua chướng ngại vật.
Xem Tìm con đường nhân vật để có chi tiết về việc sử dụng.
Tóm Tắt
Phương Pháp
Tìm thấy một Path giữa hai điểm được cung cấp.
Thuộc Tính
Phương Pháp
CreatePath
Tạo một đối tượng Path dựa trên các tham số của nhiều đại lý khác nhau. Các chìa khóa và giá trị hợp lệ trong bảng agentParameters là như sau:
<th>Loại</th><th>Mặc định</th><th>Mô tả</th></tr></thead><tbody><tr><td><b>Bán kính đại lý</b></td><td>số nguyên</td><td>2</td><td>Xác định số lượng tối thiểu không gian ngang cần thiết để không gian trống được coi là có thể đi qua.</td></tr><tr><td><b>Chiều cao đại lý</b></td><td>số nguyên</td><td>5</td><td>Xác định số lượng tối thiểu không gian dọc cần thiết để không gian trống được coi là có thể đi qua.</td></tr><tr><td><b>Nhà điều hành có thể nhảy</b></td><td>boolean như vậy</td><td>đúng</td><td>Xác định xem có cho phép nhảy trong quá trình tìm đường không.</td></tr><tr><td><b>Người lên khói có thể leo trèo</b></td><td>boolean như vậy</td><td>giả mạo</td><td>Xác định xem có cho phép leo <code>Lớp.TrussPart|TrussParts</code> trong quá trình tìm đường không.</td></tr><tr><td><b>Khoảng cách điểm dừng</b></td><td>số</td><td>4</td><td>Xác định khoảng cách giữa các điểm dừng giữa trên đường đi.</td></tr><tr><td><b>Chi phí</b></td><td>bảng</td><td>{}</td><td>Bảng vật liệu hoặc được xác định <code>Class.PathfindingModified|PathfindingModifiers</code> và "chi phí" của chúng cho việc di chuyển.Hữu ích để làm cho đại lý ưu tiên các vật liệu/khu vực nhất định hơn những người khác.Xem <a href="/characters/pathfinding#pathfinding-modifiers">ở đây</a> để có chi tiết.</td></tr></tbody>
Nhân vật chính |
---|
Tham Số
Bảng Luau cho phép bạn điều chỉnh con đường cho kích thước của đại lý (người nhân tạo sẽ di chuyển dọc theo con đường).Xem phía trên để có được các chìa khóa, loại và mô tả hợp lệ.
Lợi Nhuận
Mẫu mã
Demonstrates creating a path using PathfindingService:CreatePath()
'PathOptions' represents a Model with three paths made of different materials. When creating the path we define a large 'Cost' for two of the three paths materials. This will ensure the path created steers towards the path with the material of the lowest 'Cost'.
Once the path is created, small parts are created at each waypoint to visualize the path.
local Workspace = game:GetService("Workspace")
local PathfindingService = game:GetService("PathfindingService")
-- This model contains a start, end and three paths between the player can walk on: Snow, Metal and LeafyGrass
local PathOptionsModel = script.Parent.PathOptions
local startPosition = PathOptionsModel.Start.Position
local finishPosition = PathOptionsModel.End.Position
-- Create a path that avoids Snow and Metal materials
-- This will ensure the path created avoids the Snow and Metal paths and guides
-- the user towards the LeafyGrass path
local path = PathfindingService:CreatePath({
AgentRadius = 3,
AgentHeight = 6,
AgentCanJump = false,
Costs = {
Snow = math.huge,
Metal = math.huge,
},
})
-- Compute the path
local success, errorMessage = pcall(function()
path:ComputeAsync(startPosition, finishPosition)
end)
-- Confirm the computation was successful
if success and path.Status == Enum.PathStatus.Success then
-- For each waypoint, create a part to visualize the path
for _, waypoint in path:GetWaypoints() do
local part = Instance.new("Part")
part.Position = waypoint.Position
part.Size = Vector3.new(0.5, 0.5, 0.5)
part.Color = Color3.new(1, 0, 1)
part.Anchored = true
part.CanCollide = false
part.Parent = Workspace
end
else
print(`Path unable to be computed, error: {errorMessage}`)
end
FindPathAsync
Chức năng này được sử dụng để tìm một Path giữa hai điểm được cung cấp.Con đường này sử dụng lưới điều hướng được tạo bởi PathfindingService và đảm bảo rằng con đường có thể được theo dõi bởi một nhân vật Roblox có kích thước bình thường.
Chức năng này trả về một đối tượng Path chứa các điểm tọa độ của con đường.Nếu không tìm thấy con đường nào giữa hai điểm, chức năng này vẫn sẽ trả về một đối tượng , nhưng đối tượng đó sẽ là .
Để lấy các điểm dừng của một đối tượng Path, bạn có thể sử dụng chức năng Path:GetWaypoints().
Tham Số
Vị trí bắt đầu đường lối.
Điểm kết thúc đường.