2D パス

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

Path2D インスタンスとその API メソッドおよびプロパティにより、UI エフェクト(パスベースのアニメーションやグラフエディターなど)に役立つ 2D スプラインと 2D 曲線を実装できます。

2D パスの作成

Path2D を画面またはインエクスペリエンスオブジェクトに追加するには:

  1. Explorer ウィンドウで、可視の ScreenGui または SurfaceGui の下に Path2D インスタンスを挿入します(直下の子である必要はありません)。

    Explorer 階層の ScreenGui に親付けされた Path2D インスタンス。
  2. 新しい Path2D を選択して、インビューポートツールウィジェットを表示します。デフォルトでは、Add Point ツールが選択されています。

    2D パスエディタウィジェットで示された Add Point ツール。
  3. スクリーンをクリックして、一連の 制御点 を追加してパスを形成します。最初のパスは精度が低い可能性がありますが、後で微調整して任意の制御点の位置を修正できます。

    Add Point ツールを使用して、一連のポイントを接続する例示的なパスを作成する図。
  4. 完了したら、ウィジェットの 完了 ボタンをクリックするか、Enter を押します。

制御点を変更する

Explorer 階層で Path2D を選択すると、その個々の制御点とそのタンジェントを変更できます。

ポイントを移動したり

パス上の個々の制御点を移動するには、選択 ツール (V) を有効にし、マウスでクリック&ドラッグして新しい位置に移動します。

2D パスエディタウィジェットで示された Select ツール。 選択ツールを有効にしてクリック&ドラッグすることでパス制御点を新しい位置に移動する方法を説明する図。

特定の位置決めには、制御点を選択し、プロパティ ウィンドウでそのポイントの SelectedControlPointData プロパティ (UDim2) に新しい位置を設定します。

プロパティウィンドウで示された Path2D インスタンスの SelectedControlPointData プロパティ。

点の位置は絶対的なものではなく、パスの親コンテナに対して相対的です。たとえば、ScreenGui 内のパスの左から 30%、上から 20% の制御点と、ScreenGui の右上隅にある Frame 内の同一のパスを比較してください。

パス制御点の位置がその親コンテナに対して相対的であることを説明する図。

ポイントを追加する

新しい制御点は、既存の 2 つのポイントの間や、いずれかの端点から Add Point ツール (P) を使用して追加できます。

2D パスエディタウィジェットで示された Add Point ツール。
Add Point ツールを使用して、既存の 2 つのポイントの間に制御点を追加する方法を説明する図。
パス上の任意の場所にホバーしてクリックすると、既存の 2 つのポイントの間に制御点を追加できます
Add Point ツールを使用してパスの端に制御点を追加する方法を説明する図。
端点をクリックし、再度クリックしてその端から制御点を追加します

ポイントを削除する

制御点を削除するには、それにホバーし、右クリックして、コンテキストポップアップメニューから Delete Point を選択します。

右クリックして Delete Point を選択することでパス制御点を削除する方法を説明する図。

制御点タンジェント

制御点 タンジェント は、パス上の曲線を作成および調整することができます。

いくつかのタンジェント制御点を持つ曲がったパスを説明する図。

タンジェントを追加する

タンジェントを持たない制御点にタンジェントを追加するには:

  1. ツーリングウィジェットで Add Tangent ツールを有効にします。

    2D パスエディタウィジェットで示された Add Tangent ツール。
  2. 所望の制御点にホバーし、クリックして 2 つのミラーリングされたタンジェントを追加します(オプションで、クリック後にドラッグして調整します)。

    Add Tangent ツールを使用してタンジェントを持つ制御点を作成する方法を説明する図。

タンジェントを調整する

個々の制御点の既存のタンジェントを調整するには:

  1. 選択 ツール (V) を有効にします。

    2D パスエディタウィジェットで示された Select ツール。
  2. タンジェントマーカー(制御点ではなく)にホバーし、クリック&ドラッグして新しい位置に移動します。タンジェントがミラーリングされている場合、ペアとなるタンジェントポイントも一緒に動きます。

    選択ツールを有効にして、制御点のタンジェントを調整する方法を説明する図。

特定の UDim2 位置をタンジェントに手動で設定するには:

  1. 選択 ツール (V) を有効にし、制御点を選択します。 プロパティ ウィンドウで、SelectedControlPointData フィールドを展開して、LeftTangent および RightTangent プロパティを表示します。

    プロパティウィンドウで示された Path2D 制御点の LeftTangent と RightTangent プロパティ。
  2. LeftTangent と/または RightTangent の位置を設定します。この操作により、タンジェントのミラーリング動作が破壊されることに注意してください。

タンジェントを削除する

制御点から両方のタンジェントを削除するには、そのポイントにホバーし、右クリックして、コンテキストポップアップメニューから Clear Tangents を選択します。

右クリックして Clear Tangents を選択することで制御点の両方のタンジェントをクリアする方法を説明する図。

一方のタンジェント(左または右)のみを削除するには、そのタンジェントのマーカーにホバーし、右クリックして Delete Tangent を選択します。

右クリックして Delete Tangent を選択することで制御点のタンジェントを削除する方法を説明する図。

破壊とミラー

デフォルトでは、タンジェントは互いにミラーリングされます。調整するために一方のタンジェント マーカーをドラッグすると、ペアのタンジェントポイントも一緒に移動します。

選択ツールを有効にして制御点のタンジェントを調整する方法を示す図。

タンジェントをそれぞれ独立して移動できるようにするために「壊す」には、関連する制御点にホバーし、右クリックしてコンテキストメニューから Break Tangents を選択します。一度壊すと、他に影響を与えずに各タンジェントマーカーを移動できます。

右クリックして Break Tangents を選択することで制御点のタンジェントが壊れる方法を説明する図。

パスの視覚プロパティ

次のプロパティを使用して、Path2D の視覚的な外観をカスタマイズできます:

プロパティ説明
Color3パスラインの色を設定します。
Thicknessパスラインの太さ(ピクセル単位)を設定します。
Visible編集およびランタイムの両方でパスを表示するかどうかを設定します。
ZIndex他の GUI に対するパスの表示順序を設定します。
Thickness が 2、Color3 が (125, 125, 125) のパスを説明する図。
Thickness = 2
Color3 = (125, 125, 125)
Thickness が 10、Color3 が (225, 0, 50) のパスを説明する図。
Thickness = 10
Color3 = (225, 0, 50)
ZIndex プロパティを利用して他のものの前に配置されたパスを説明する図。
ZIndex 層積み

パススクリプティング

スクリプティングは、いくつかのパス関連のワークフローに役立ちます。以下の例では、GetControlPoints()GetPositionOnCurveArcLength() といったメソッドを使用します。これらはそれぞれ Path2DControlPoints のテーブルや、指定された t 値に沿ったスプラインの UDim2 位置を返します。

UI オブジェクトをパスに沿って配置

local parent = script.Parent
local path = parent:FindFirstChildWhichIsA("Path2D")
local function arrangeChildren()
local segmentCount = #path:GetControlPoints()
local objectsToArrange = {}
for _, child in parent:GetChildren() do
if child:IsA("GuiObject") then
table.insert(objectsToArrange, child)
end
end
for idx, child in objectsToArrange do
local t = idx / (#objectsToArrange + 1)
child.Position = path:GetPositionOnCurveArcLength(t)
end
end
-- パス全体に子UIオブジェクトを初期配置
arrangeChildren()
-- 子が追加/削除された時に配置を調整
parent.ChildAdded:Connect(arrangeChildren)
parent.ChildRemoved:Connect(arrangeChildren)
パスに沿って UI オブジェクトをアニメート

local Tweenservice = game:GetService("TweenService")
local parent = script.Parent
local path = parent:FindFirstChildWhichIsA("Path2D")
local objectToAnimate = parent:FindFirstChildWhichIsA("GuiObject")
local TWEEN_DURATION = 4
local TWEEN_EASING_STYLE = Enum.EasingStyle.Cubic
local TWEEN_EASING_DIRECTION = Enum.EasingDirection.InOut
local pathSampleValue = Instance.new("NumberValue")
local tweenInfo = TweenInfo.new(TWEEN_DURATION, TWEEN_EASING_STYLE, TWEEN_EASING_DIRECTION, 0, true, 2)
local tween = Tweenservice:Create(pathSampleValue, tweenInfo, {Value = 1})
local function onSampleValueChanged()
objectToAnimate.Position = path:GetPositionOnCurveArcLength(pathSampleValue.Value)
end
pathSampleValue.Changed:Connect(onSampleValueChanged)
tween:Play()
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。