Guida per gli sviluppatori dei posizionamenti istantanei per la piattaforma AR

Scopri come utilizzare l' API Instant Placement o i raycast persistenti nelle tue app.

Prerequisiti

Prima di procedere, assicurati di comprendere i concetti fondamentali di AR e come configurare una sessione ARCore.

Nomi dei concetti

I nomi di alcuni concetti e metodi possono variare tra AR Foundation e ARCore SDK for Unity. Sono elencati nella tabella seguente per semplificare la consultazione.

AR Foundation ARCore SDK for Unity
Raycast persistenti Instant Placement
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Nessuna equivalenza) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Prerequisiti

Questa guida presuppone che tu abbia già installato e configurato Unity. In caso contrario, consulta la sezione Guida introduttiva alle estensioni ARCore per AR Foundation per i passaggi di installazione e configurazione.

Configurare una nuova sessione con ARRaycastManager

Instant Placement (raycast persistenti) è disponibile immediatamente con il pacchetto AR Foundation. Per configurare la scena, segui questi passaggi.

AR Foundation 4.x

  1. Aggiungi gli oggetti di gioco predefiniti AR Session Origin e AR Session.

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

Quando Raycast Prefab non è null, ARRaycastManager istanzia il prefab e sincronizza automaticamente la sua posa con la posa di ARRaycast.

AR Foundation 5.x

  1. Aggiungi gli oggetti di gioco predefiniti XR Origin e AR Session.

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

Quando Raycast Prefab non è null, ARRaycastManager istanzia il prefab e sincronizza automaticamente la sua posa con la posa di ARRaycast.

AR Foundation 6.x

  1. Aggiungi gli oggetti di gioco predefiniti XR Origin e AR Session.

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

Quando Raycast Prefab non è null, ARRaycastManager istanzia il prefab e sincronizza automaticamente la sua posa con la posa di ARRaycast.

Posizionare un oggetto

In una nuova sessione ARCore, esegui un hit test 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 di monitoraggio di ARRaycast

Se ARCore ha una posa 3D precisa, ARRaycast.trackingState sarà Tracking. In caso contrario, inizierà con Limited e passerà a Tracking una volta che ARCore avrà una posa 3D precisa. Una volta che lo stato di monitoraggio diventa Tracking, non tornerà a Limited.