Scopri come utilizzare l'API Instant posizionamento o i raycast permanenti 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.
Elementi di base AR | 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.
Configura una nuova sessione con ARRaycastManager
Il posizionamento istantaneo (raycast persistenti) è disponibile immediatamente con il pacchetto AR Foundation. Segui questi passaggi per configurare la scena.
AR Foundation 4.x
Aggiungi gli oggetti di gioco predefiniti AR Session Origin e AR Session.
Aggiungi il componente AR Raycast Manager all'oggetto del 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
.
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.
…
}
}
Monitora lo stato di monitoraggio di ARRaycast
Se ARCore ha una posa 3D precisa, il valore di 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
.