Aprende a usar la API de Instant Placement o los raycasts persistentes en tus propias apps.
Requisitos previos
Asegúrate de comprender los conceptos fundamentales de RA y cómo configurar una sesión de ARCore antes de continuar.
Nombres de conceptos
Los nombres de ciertos conceptos y métodos pueden diferir entre AR Foundation y el SDK de ARCore para Unity. Se enumeran en la siguiente tabla para facilitar la consulta.
| AR Foundation | SDK de ARCore para Unity |
| Raycasts persistentes | Instant Placement |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
| (Sin equivalencia) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Requisitos previos
En esta guía, se supone que ya instalaste y configuraste Unity. De lo contrario, consulta Comienza a usar las extensiones de ARCore para AR Foundation para conocer los pasos de instalación y configuración.
Configura una sesión nueva con ARRaycastManager
Instant Placement (raycasts persistentes) está disponible de inmediato con el paquete de AR Foundation. Sigue estos pasos para configurar tu escena.
AR Foundation 4.x
Agrega los objetos de juego predefinidos AR Session Origin y AR Session.

Agrega el AR Raycast Manager componente al AR Session Origin objeto de juego.

Cuando Raycast Prefab no es nulo, ARRaycastManager
creará una instancia del prefab y sincronizará automáticamente su pose con la de
ARRaycast.
AR Foundation 5.x
Agrega los objetos de juego predefinidos XR Origin y AR Session.

Agrega el AR Raycast Manager componente al XR Origin objeto de juego.

Cuando Raycast Prefab no es nulo, ARRaycastManager
creará una instancia del prefab y sincronizará automáticamente su pose con la de
ARRaycast.
AR Foundation 6.x
Agrega los objetos de juego predefinidos XR Origin y AR Session.

Agrega el AR Raycast Manager componente al XR Origin objeto de juego.

Cuando Raycast Prefab no es nulo, ARRaycastManager
creará una instancia del prefab y sincronizará automáticamente su pose con la de
ARRaycast.
Coloca un objeto
En una sesión nueva de ARCore, realiza una prueba de posicionamiento con
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.
…
}
}
Supervisa el estado de seguimiento de ARRaycast
Si ARCore tiene una pose 3D precisa, el ARRaycast.trackingState será Tracking.
De lo contrario, comenzará con Limited
y pasará a Tracking una vez que ARCore tenga una pose 3D precisa. Una vez que el estado de seguimiento se convierta en Tracking,
no volverá a
Limited.