パス オブジェクトは、PathfindingService:CreatePath() によって作成されたパスの結果を保存します。
パスオブジェクトが作成されると
Class.パスath:ComputeAsync()|ComputeAsync() 、Path オブジェクトには、GetWaypoints() メソッドがあり、シーケンスでポイントを表示するために、ポイントの開始から最終までの一覧を返します。
最後に、 Path オブジェクトは、 Class.Path.Blocked イベントに接続できます。このイベントは、パスの存在中に、パスがブロックされる場合に発動します。これは、パスがパスの存在の前には、キャラクターの移動によって発生することがあります。
概要
方法
パス内のポイントを返します。
特定の方位点から開始するパスをブロックしているかどうかをチェックします。
開始位置から終了位置まで Path を計算します。
イベント
計算されたパスがブロックされると、ファイアを起動します。
ブロックされていた計算されたパスがアンブロックされるときにファイアを起動します。
プロパティ
方法
GetWaypoints
この関数は、<a href="/reference/engine/datatypes">データタイプ</a>、<a href="/reference/engine/datatypes">パスワイヤーポイント</a>、<a href="/reference/engine/datatypes">パスワイヤーポイント</a>、<a href="/reference/engine/datatypes">パスワイヤーポイント</a>、<a href="/reference/engine/datatypes">パスワイヤーポイント</a>、<a href="/reference/engine/datatypes">パスワイヤーポイント</a>、<a href="/reference/enge
配列の各ワープポイントは、Vector3 ポジションとaction を指定します。この PathWaypoint が到達すると、配列はワープポイントの順序で配置されます。パス開始からパス終了までのワープポイントの順序で構成されています。
パスが計算できなかった場合、この関数は空の配列を返します。
戻り値
Datatype.PathWaypoint|PathWaypoints パス開始からパス終了までの配列。
コードサンプル
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
この関数は、 開始 と指定された方位点から開始しているパスがブロックされているかどうかをチェックします。
ブロックされている場合、最初のオクローションポイントを返します。 -1 がない場合は、 開始 が 0 未満のか、Path のオクローションポイントの数より大きいため、エラーが返されます。
パラメータ
戻り値
ComputeAsync
この関数は、Path をスタートポジションからエンドポジションに計算します。この関数は、パスが作成されると自動的に呼び出されず、パスが更新されるたびに呼び出される必要があります。
パスが計算されると、パスをフォローすると、キャラクターをパスに沿って移動できる一連のウェイポイントがあります。これらのポイントは、Path:GetWaypoints() 関数で集計されます。
パラメータ
戻り値
コードサンプル
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
計算されたパスがブロックされるときにファイアを起動します。パスは、エージェントが逃げるときにパスの後ろの場所にブロックされる場合があります。たとえば、エージェントが逃げるときにパスの前方の進行状況を確認するには、ブロックされたパスを処理するを参照してください。
パラメータ
Unblocked
ブロックされた計算されたパスがアンブロックされるときに発動します。これは、ブロックされたパスがエージェントの後ろのどこかになることがあり、損傷に対する反応を必要としないために、ブロックされたパスの進行状況を確認するために 「ブロックされたパスを処理する」を参照してください。