Guida per gli sviluppatori dei posizionamenti istantanei per la piattaforma AR
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Scopri come utilizzare l'API Instant Placement o i raycast persistenti nelle tue app.
Prerequisiti
Prima di procedere, assicurati di conoscere i concetti fondamentali dell'AR e come configurare una sessione ARCore.
Nomi dei concetti
I nomi di determinati concetti e metodi possono variare tra AR Foundation e l'SDK ARCore per Unity. Questi sono elencati nella tabella seguente per riferimento futuro.
Prerequisiti
Questa guida presuppone che tu abbia già installato e configurato Unity. In caso contrario, consulta la guida introduttiva alle Estensioni ARCore per AR Foundation per conoscere la procedura di installazione e configurazione.
Il posizionamento istantaneo (raycast persistenti) è disponibile immediatamente con il pacchetto AR
Foundation. Per configurare la scena, segui questi passaggi.
AR Foundation 4.x
Aggiungi gli oggetti di gioco predefiniti AR Session Origin e
AR Session.

Aggiungi il componente AR Raycast Manager all'oggetto di gioco AR Session Origin.

Quando Raycast Prefab non è nullo, ARRaycastManager
inizializzerà il prefab e sincronizzerà automaticamente la sua posa con la posa di
ARRaycast
.
AR Foundation 5.x
Aggiungi gli oggetti di gioco predefiniti XR Origin e
AR Session.

Aggiungi il componente AR Raycast Manager all'oggetto di gioco XR Origin.

Quando Raycast Prefab non è nullo, ARRaycastManager
inizializzerà il prefab e sincronizzerà automaticamente la sua posa con la posa di
ARRaycast
.
AR Foundation 6.x
Aggiungi gli oggetti di gioco predefiniti XR Origin e
AR Session.

Aggiungi il componente AR Raycast Manager all'oggetto di gioco XR Origin.

Quando Raycast Prefab non è nullo, ARRaycastManager
inizializzerà il prefab e sincronizzerà automaticamente la sua posa con la posa di
ARRaycast
.
Posiziona un oggetto
In una nuova sessione ARCore, esegui un test di corrispondenza utilizzando
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.
…
}
}
Monitorare lo stato del monitoraggio ARRaycast
Se ARCore ha una posa 3D accurata, ARRaycast.trackingState
sarà Tracking
.
In caso contrario, inizierà con Limited
e passerà a Tracking
quando ARCore avrà una posa 3D accurata. Una volta che lo stato di monitoraggio diventa Tracking
,
non tornerà a
Limited
.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-14 UTC.
[null,null,["Ultimo aggiornamento 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)."]]