Guía para desarrolladores sobre la Posición instantánea sobre AR Foundation

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 la 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. Estos se enumeran en la siguiente tabla para facilitar la consulta.

AR Foundation SDK de ARCore para Unity
Raycasts persistentes Ubicación instantánea
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 Cómo comenzar 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

La colocación instantánea (raycasts persistentes) está disponible de inmediato con el paquete de AR Foundation. Sigue estos pasos para configurar tu escena.

AR Foundation 4.x

  1. Agrega los objetos de juego predefinidos AR Session Origin y AR Session.

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

Cuando Raycast Prefab no es nula, ARRaycastManager creará una instancia del prefab y sincronizará automáticamente su pose con la pose de ARRaycast.

AR Foundation 5.x

  1. Agrega los objetos de juego predefinidos XR Origin y AR Session.

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

Cuando el prefab de Raycast no sea nulo, ARRaycastManager creará una instancia del prefab y sincronizará automáticamente su pose con la de ARRaycast.

Coloca un objeto

En una nueva sesión 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 posición 3D precisa, ARRaycast.trackingState será Tracking. De lo contrario, comenzará con Limited y hará la transición a Tracking una vez que ARCore tenga una pose 3D precisa. Una vez que el estado de seguimiento sea Tracking, no volverá a Limited.