Scopri come utilizzare API di posizionamento istantaneo oppure raycast permanenti, nelle tue app.
Prerequisiti
Assicurati di comprendere i concetti fondamentali della realtà aumentata e su come configurare una sessione ARCore prima di procedere.
Nomi dei concetti
I nomi di alcuni concetti e metodi potrebbero variare tra AR Foundation e il SDK ARCore per Unity. Questi elenchi sono elencati nella tabella di seguito per una facile consultazione.
Elementi di base AR | SDK ARCore per Unity |
Raggicast persistenti | 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, vedi consulta la pagina Getting started with ARCore Extensions for AR Foundation per i passaggi di installazione e configurazione.
Configura una nuova sessione con ARRaycastManager
Il posizionamento istantaneo (raycast permanenti) è già disponibile con l'AR Pacchetto base. 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 a Oggetto gioco AR Session Origin.
Quando Raycast Prefab non è null, ARRaycastManager
creerà un'istanza del 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 a Oggetto gioco XR Origin.
Quando Raycast Prefab non è null, ARRaycastManager
creerà un'istanza del prefab e sincronizzerà automaticamente la sua posa con la posa di
ARRaycast
.
Posiziona 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.
…
}
}
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 passa a Tracking
una volta che ARCore ha una posa 3D accurata. Quando lo stato di monitoraggio diventa Tracking
,
non verrà ripristinato
Limited
.