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

Dowiedz się, jak korzystać z Natychmiastowa lokalizacja API lub trwałe promienie raycast we własnych aplikacjach.

Wymagania wstępne

Upewnij się, że znasz podstawowe pojęcia związane z AR. i dowiedz się, jak skonfigurować sesję ARCore, zanim przejdziesz dalej.

Nazwy koncepcji

Nazwy niektórych koncepcji i metod mogą się różnić między AR Foundation a Pakiet ARCore SDK dla Unity. Przedstawiamy je w tabeli poniżej.

Podstawy AR Pakiet ARCore SDK dla Unity
Trwałe promieniowanie promieniowania Szybkie miejsce docelowe
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 przyjęto założenie, że masz już zainstalowaną i skonfigurowaną platformę Unity. Jeśli nie, zapoznaj się z artykułem Wprowadzenie do ARCore Extensions for AR Foundation .

Skonfiguruj nową sesję w aplikacji ARRaycastManager

Błyskawiczne miejsce docelowe (trwałe transmisje promieni) jest dostępne od razu po włączeniu funkcji AR Pakiet podstawowy. Aby skonfigurować scenę, wykonaj te czynności.

AR Foundation 4.x

  1. Dodaj wstępnie zdefiniowane obiekty gry AR Session Origin oraz AR Session

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

Gdy Prefab Raycast nie ma wartości null, ARRaycastManager utworzy instancję prefaba i automatycznie zsynchronizuje jej pozycję z położeniem ARRaycast

AR Foundation 5.x

  1. Dodaj wstępnie zdefiniowane obiekty gry XR Origin oraz AR Session

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

Gdy Prefab Raycast nie ma wartości null, ARRaycastManager utworzy instancję prefaba i automatycznie zsynchronizuje jej pozycję z położeniem ARRaycast

Umieszczanie obiektu

W nowej sesji ARCore przeprowadź test działań za pomocą funkcji 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ą pozycję 3D, ARRaycast.trackingState będzie mieć wartość Tracking. W przeciwnym razie zaczyna się od Limited i przejście do Tracking, gdy ARCore uzyska dokładną pozycję 3D. Gdy stan śledzenia zmieni się na Tracking, nie zostanie przywrócona Limited