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 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.

AR Foundation SDK ARCore per Unity
Raycast permanenti Posizionamento istantaneo
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 guida introduttiva alle Estensioni ARCore per AR Foundation per conoscere la procedura di installazione e configurazione.

Configurare una nuova sessione con ARRaycastManager

Il posizionamento istantaneo (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 è nullo, ARRaycastManager inizializzerà il prefab e sincronizzerà 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 è 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 del monitoraggio diventa Tracking, non tornerà a Limited.