Przewodnik dla programistów dotyczący błyskawicznego miejsca docelowego dla AR Foundation

Dowiedz się, jak korzystać z interfejsu Instant Placement API lub trwałych rzutów promieni w swoich aplikacjach.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe pojęcia związane z AR i wiesz, jak skonfigurować sesję ARCore.

Nazwy pojęć

Nazwy niektórych pojęć i metod mogą się różnić w zależności od AR Foundation i pakietu ARCore SDK for Unity. Aby ułatwić Ci pracę, znajdziesz je w tabeli poniżej.

AR Foundation Pakiet ARCore SDK for Unity
Trwałe rzuty promieni Natychmiastowe umieszczanie
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Brak odpowiednika) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Wymagania wstępne

W tym przewodniku zakładamy, że masz już zainstalowany i skonfigurowany program Unity. Jeśli nie, zapoznaj się z instrukcjami instalacji i konfiguracji w artykule Pierwsze kroki z rozszerzeniami ARCore dla AR Foundation.

Konfigurowanie nowej sesji za pomocą ARRaycastManager

Natychmiastowe umieszczanie (trwałe rzuty promieni) jest dostępne od razu po zainstalowaniu pakietu AR Foundation. Aby skonfigurować scenę, wykonaj te czynności.

AR Foundation 4.x

  1. Dodaj predefiniowane obiekty gry AR Session Origin i AR Session.

  2. Dodaj komponent AR Raycast Manager do obiektu gry AR Session Origin.

Gdy Raycast Prefab nie jest wartością null, ARRaycastManager utworzy instancję prefabrykatu i automatycznie zsynchronizuje jego pozę z pozą ARRaycast.

AR Foundation 5.x

  1. Dodaj predefiniowane obiekty gry XR Origin i AR Session.

  2. Dodaj komponent AR Raycast Manager do XR Origin obiektu gry.

Gdy Raycast Prefab nie jest wartością null, ARRaycastManager utworzy instancję prefabrykatu i automatycznie zsynchronizuje jego pozę z pozą ARRaycast.

AR Foundation 6.x

  1. Dodaj predefiniowane obiekty gry XR Origin i AR Session.

  2. Dodaj komponent AR Raycast Manager do XR Origin obiektu gry.

Gdy Raycast Prefab nie jest wartością null, ARRaycastManager utworzy instancję prefabrykatu i automatycznie zsynchronizuje jego pozę z pozą ARRaycast.

Umieszczanie obiektu

W nowej sesji ARCore wykonaj test pozycji wskaźnika za pomocą 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.
        
    }
}

Monitorowanie stanu śledzenia ARRaycast

Jeśli ARCore ma dokładną pozę 3D, ARRaycast.trackingState będzie mieć wartość Tracking. W przeciwnym razie zacznie się od Limited i przejdzie do Tracking, gdy ARCore będzie mieć dokładną pozę 3D. Gdy stan śledzenia zmieni się na Tracking, nie wróci do Limited.