Path

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
未複製

路徑 對象存儲 PathfindingService:CreatePath() 創建的路徑的結果。

一旦路徑對象已建立,

除了 ComputeAsync()Path 對象有 GetWaypoints() 方法,可以返回一個代表角色應該跟隨路徑從開始到最後的方點的列表。

最後,Path 對象可以 連接到 Class.Path.Blocked 事件。這個事件會在路徑存在期間發生,如果在路徑的存在期間路徑被阻塞,這個事件將發生。注意,這可以發生在 路徑 的前方,而不是在路徑的前方。

概要

方法

活動

屬性

唯讀
未複製
平行讀取

生成的 Path 的成功。

方法

GetWaypoints

此函數將所有 PathWaypointsPath 中返回一個陣列,作為由 Path:ComputeAsync() 計算的。

每個方位點在陣列中指定一個 Vector3 位置和 action 來取得此 PathWaypoint 達到時。陣列是由路徑開始到路徑結束的順序排列在一起的。

如果路徑無法計算,此函數將返回空陣列。


返回

Datatype.PathWaypoint|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

暫停

此功能檢查是否有方塊路徑開始在 開始 指定的路徑。

如果已阻擋,返回第一個關閉點;如果未阻擋,返回第一個方位點的錯誤;如果 開始 小於 0 或大於 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

計算機路徑被阻擋時發射。注意路徑可能會在 agent 跑 away 的某個地方 發生阻擋。請參閱 處理阻擋路徑 了解檢查路徑前方方向的進度。

參數

blockedWaypointIdx: number

Unblocked

計算機路徑被阻擋時發射。注意,阻擋路徑可能會在某個地方 代理發生,從而使反應對此事件毫無必要。請參閱「處理路徑阻擋」獲得詳細資訊。

參數

unblockedWaypointIdx: number