Path

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
未复制

路径对象存储创建通过 PathfindingService:CreatePath() 的路径的结果。 一旦路径对象创建,您可以使用

除了 ComputeAsync() 外,Path 对象还有 GetWaypoints() 方法,该方法返回一个列表的方向代表在角色从开始到达路径的终点。

最后,Path 对象可以通过连接到 Class.Path.Blocked 事件来连接到 Path.Blocked 事件。 此事件将发生,如果在路径的存在期间(1>在路径的存在期间1>),路径被阻塞。 请注意, 这可以在路径上移动的角色后,不是在路径的前部。

概要

方法

活动

属性

只读
未复制
读取并联

生成的 Path 的成功。

方法

GetWaypoints

此函数将所有 PathWaypointsPath 中返回一个数列,根据 Path:ComputeAsync() 计算。

在 матри阵中的每个 Waypoint 指定一个 Vector3 位置和 action 来取得此 Waypoint 。 阵列是从路径开始到路径结束的路径顺序。

如果不能计算路径,这个函数将返回一个空的阵数组。


返回

Datatype.PathWaypoints 从路径开始到路径结束的命令列。

代码示例

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

暂停

此函数检查是否有开始于 开始 所指示的方向点的路径被阻塞。

如果被阻塞,返回第一个位置点的方位;如果不是,它将返回一个错误,如果 start 小于 0 或大于 Path 中的位置点数。

参数

start: number

返回

ComputeAsync

void
暂停

此函数从开始位置计算一个 Path 从开始位置到最终位置。此函数不会自动调用,必须每次路径更新时才能调用。

当路径计算完成后,它将有一系列方向点,跟随时,可以让角色沿着路径移动。这些点是通过 Path:GetWaypoints() 函数收集的。

参数

start: Vector3

计算路径所开始的世界位置。

finish: Vector3

计算路径完成的世界位置。


返回

void

代码示例

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)

活动

Blocked

计算路径被阻塞时会发生。注意,路径可能会在某个地方 代理,例如路径上的一堆废料掉落在路径上。请参阅处理阻塞路径了解关于查看代理人在路径上前进方向的进度的详细信息。

参数

blockedWaypointIdx: number

Unblocked

发生时,计算路径如果已被阻塞,就会解锁。注意,如果被阻塞的路径在某个地方 的代理,那么,在交互代理的前方路径上检查的交互进度可能会使反应不必要。请参阅处理阻塞路径了解交互代理的前方路径进度。

参数

unblockedWaypointIdx: number