AR Foundation のインスタント プレースメント デベロッパー ガイド
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
独自のアプリで Instant Placement API または永続的なレイキャストを使用する方法を学びます。
前提条件
続行する前に、基本的な AR コンセプトと ARCore セッションを構成する方法を理解してください。
コンセプト名
特定のコンセプトとメソッドの名前は、AR Foundation と ARCore SDK for Unity で異なる場合があります。以下に、これらの値をまとめた表を示します。
前提条件
このガイドでは、Unity がすでにインストールされ、構成されていることを前提としています。インストールされていない場合は、AR Foundation 向け ARCore Extensions のスタートガイドでインストールと設定の手順をご覧ください。
インスタント プレースメント(永続的なレイキャスト)は、AR Foundation パッケージですぐに使用できます。シーンを設定する手順は次のとおりです。
AR Foundation 4.x
事前定義されたゲーム オブジェクト AR Session Origin と AR Session を追加します。

AR Raycast Manager コンポーネントを AR Session Origin ゲーム オブジェクトに追加します。

Raycast Prefab が null でない場合、ARRaycastManager
はプレハブをインスタンス化し、そのポーズを ARRaycast
のポーズと自動的に同期します。
AR Foundation 5.x
事前定義されたゲーム オブジェクト XR Origin と AR Session を追加します。

AR Raycast Manager コンポーネントを XR Origin ゲーム オブジェクトに追加します。

Raycast Prefab が null でない場合、ARRaycastManager
はプレハブをインスタンス化し、そのポーズを ARRaycast
のポーズと自動的に同期します。
AR Foundation 6.x
事前定義されたゲーム オブジェクト XR Origin と AR Session を追加します。

AR Raycast Manager コンポーネントを XR Origin ゲーム オブジェクトに追加します。

Raycast Prefab が null でない場合、ARRaycastManager
はプレハブをインスタンス化し、そのポーズを ARRaycast
のポーズと自動的に同期します。
オブジェクトを配置する
新しい ARCore セッションで、ARRaycastManager.AddRaycast(Vector2, float)
を使用してヒットテストを実行します。
public ARRaycastManager RaycastManager; // set from the Editor Inspector.
void Update()
{
Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}
if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
{
return;
}
ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
if (raycast != null)
{
// You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
…
}
}
ARRaycast の追跡状態をモニタリングする
ARCore が正確な 3D ポーズを取得している場合、ARRaycast.trackingState
は Tracking
になります。そうでない場合は、Limited
から始まり、ARCore が正確な 3D ポーズを取得すると Tracking
に移行します。トラッキング ステータスが Tracking
になると、Limited
に戻ることはありません。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-14 UTC。
[null,null,["最終更新日 2025-07-14 UTC。"],[[["\u003cp\u003eLearn to use the Instant Placement API or persistent raycasts in your AR apps.\u003c/p\u003e\n"],["\u003cp\u003eUnderstand fundamental AR concepts and ARCore session configuration as prerequisites.\u003c/p\u003e\n"],["\u003cp\u003eSet up your scene with AR Session Origin, AR Session, and AR Raycast Manager components.\u003c/p\u003e\n"],["\u003cp\u003ePlace objects by performing hit tests using \u003ccode\u003eARRaycastManager.AddRaycast\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eMonitor the \u003ccode\u003eARRaycast\u003c/code\u003e tracking state to determine the accuracy of the 3D pose.\u003c/p\u003e\n"]]],[],null,["# Instant Placement developer guide for AR Foundation\n\nLearn how to use the\n[Instant Placement API](/ar/develop/unity-arf/instant-placement/overview), or\n[persistent raycasts](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#persistent-raycasts), in your own apps.\n\nPrerequisites\n-------------\n\nMake sure that you understand [fundamental AR concepts](/ar/develop/fundamentals)\nand how to [configure an ARCore session](/ar/develop/unity-arf/session-config) before proceeding.\n\nConcept names\n-------------\n\nNames of certain concepts and methods may differ between AR Foundation and the\nARCore SDK for Unity. These are listed in the table below for easy reference.\n\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **AR Foundation** | **ARCore SDK for Unity** |\n| [Persistent raycasts](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#:~:text=Persistent%20raycasts,ARRaycastManager%20component%20from%20script%20code.) | Instant Placement |\n| [ARRaycastManager.AddRaycast(Vector2, float)](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html#persistent-raycasts) | [Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)](https://developers.google.com/ar/reference/unity/class/GoogleARCore/Frame#raycastinstantplacement) |\n| [ARRaycast](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html) | [TrackableHit](https://developers.google.com/ar/reference/unity/struct/GoogleARCore/TrackableHit) |\n| (No equivalence) | [InstantPlacementPoint](https://developers.google.com/ar/reference/unity/class/GoogleARCore/InstantPlacementPoint) |\n| [ARRaycast.trackingState](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARTrackable-2.html#UnityEngine_XR_ARFoundation_ARTrackable_2_trackingState) | [InstantPlacementPointTrackingMethod](https://developers.google.com/ar/reference/unity/class/GoogleARCore/InstantPlacementPoint?#trackingmethod) |\n\nPrerequisites\n-------------\n\nThis guide assumes you have already installed and configured Unity. If not, see\nthe [Getting started with ARCore Extensions for AR Foundation](/ar/develop/unity-arf/getting-started-extensions)\nfor installation and setup steps.\n\nConfigure a new session with `ARRaycastManager`\n-----------------------------------------------\n\nInstant Placement (persistent raycasts) is available out of the box with the AR\nFoundation package. Follow these steps to set up your scene. \n\n### AR Foundation 4.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **AR Session Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **AR Session Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\n### AR Foundation 5.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **XR Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **XR Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\n### AR Foundation 6.x\n\n\u003cbr /\u003e\n\n1. Add the predefined game objects **XR Origin** and\n **AR Session**.\n\n2. Add the **AR Raycast Manager** component into the\n **XR Origin** game object.\n\nWhen Raycast Prefab is not null, [`ARRaycastManager`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html)\nwill instantiate the prefab and automatically sync its pose with the pose of\n[`ARRaycast`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycast.html).\n\n\u003cbr /\u003e\n\nPlace an object\n---------------\n\nIn a new ARCore session, perform a hit test using\n[`ARRaycastManager.AddRaycast(Vector2, float)`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARRaycastManager.html#UnityEngine_XR_ARFoundation_ARRaycastManager_AddRaycast_UnityEngine_Vector2_System_Single_). \n\n public ARRaycastManager RaycastManager; // set from the Editor Inspector.\n\n void Update()\n {\n Touch touch;\n if (Input.touchCount \u003c 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)\n {\n return;\n }\n\n if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))\n {\n return;\n }\n\n ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);\n if (raycast != null)\n {\n // You can instantiate a 3D object here if you haven't set Raycast Prefab in the scene.\n ...\n }\n }\n\nMonitor the ARRaycast tracking state\n------------------------------------\n\nIf ARCore has an accurate 3D pose, the [`ARRaycast.trackingState`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARTrackable-2.html#UnityEngine_XR_ARFoundation_ARTrackable_2_trackingState) will be [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html).\nOtherwise, it will start with [`Limited`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html)\nand transition to [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html) once ARCore has an accurate 3D pose. Once the tracking state becomes [`Tracking`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html),\nit will not revert to\n[`Limited`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.TrackingState.html)."]]