PathfindingService

显示已弃用

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

无法创建
服务
未复制

PathfindingService 用于在两个点之间找到有道理的路径,确保角色可以在角色之间移动,而不会碰到墙壁或其他障碍。 默认情况下,最短路径是计算,但您可以实现路径找模式来在各种材料、周围区域或通过障碍物计算更聪明的路径。

请参阅角色路径探索获取使用详细信息。

属性

方法

CreatePath

创建一个 Path 对象,基于各个代理参数。有效的钥匙和值在 agentParameters 表中如下所示:


<tbody>
<tr>
<td><b>代理範围</b></td>
<td>整数</td>
<td>2</td>
<td>确定空白空间需要的最小横向空间,才能将其视为可穿越。</td>
</tr>
<tr>
<td><b>代理高度</b></td>
<td>整数</td>
<td>5</td>
<td>确定空间可被通过的最小垂直空间。</td>
</tr>
<tr>
<td><b>AgentCanJump</b></td>
<td>boolean</td>
<td>真的</td>
<td>决定是否允许在寻路时跳跃。</td>
</tr>
<tr>
<td><b>AgentCanClimb</b></td>
<td>boolean</td>
<td>否</td>
<td>确定是否允许在寻路时攀爬 <code>Class.TrussPart|TrussParts</code>。</td>
</tr>
<tr>
<td><b>方位空间编辑器</b></td>
<td>数</td>
<td>4</td>
<td>确定路径中间的间隙。</td>
</tr>
<tr>
<td><b>花费</b></td>
<td>表</td>
<td></td>
<td>材料表或定义 <code>Class.PathfindingModifier|PathfindingModifiers</code> 和其“成本”对于穿越。 有助于使代理首选某些材料/区域过其他。 请参阅 <a href="../../../characters/pathfinding.md#pathfinding-modifiers">这里</a> 获取详细信息。</td>
</tr>
</tbody>
钥匙类型默认描述

参数

agentParameters: Dictionary

可让您微调代理大小的 Lua 桌子(人形将沿着路径移动的人形)。见上方的有效钥匙、类型和描述。

默认值:"nil"

返回

一个 Path 对象。

代码示例

Creating a Path with Pathfinding Service

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

暂停

此函数用于将 Path 找到在两个指定点之间。此路径使用 PathfindingService 创建的导航网格,并确保路径可以跟随正常大小的 Roblox 角色。

此函数将返回一个 Path 对象,该对象包含路径的坐标。如果没有找到两个点之间的路径,该函数仍将返回一个 Path 对象,但该对象的 Path.Status 将为 2>Ennum.PathStatus.NoPath2>。

要获得 Path 对象的方向点,您可以使用 Path:GetWaypoints() 函数。

参数

start: Vector3

路径开始坐标。

finish: Vector3

路径完成坐标。


返回

一个 Path 对象。

活动