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

Dowiedz się, jak używać w swoich aplikacjach interfejsu Instant Placement API lub trwałych promieniowań.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.

nazwy koncepcji,

Nazwy niektórych koncepcji i metod mogą się różnić między AR Foundation a ARCore SDK for Unity. W tabeli poniżej znajdziesz listę tych funkcji.

AR Foundation Pakiet SDK ARCore dla Unity
Stały skan promieniowy Natychmiastowe umieszczenie
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ż zainstalowaną i skonfigurowaną platformę Unity. Jeśli nie, zapoznaj się z Pierwsze kroki z rozszerzeniami ARCore dla AR Foundation, aby dowiedzieć się, jak je zainstalować i skonfigurować.

Konfigurowanie nowej sesji za pomocą usługi ARRaycastManager

Funkcja błyskawicznego umieszczania (trwałe rzuty promieniowe) jest dostępna od razu po zainstalowaniu pakietu ARFoundation. Aby skonfigurować scenę, wykonaj te czynności.

AR Foundation 4.x

  1. Dodaj wstępnie zdefiniowane obiekty gry AR Session OriginAR Session.

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

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast.

AR Foundation 5.x

  1. Dodaj wstępnie zdefiniowane obiekty gry XR OriginAR Session.

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

Jeśli wartość Raycast Prefab nie jest równa null, ARRaycastManager utworzy instancję prefab i automatycznie zsynchronizuje jej pozę z pozą ARRaycast.

Umieszczenie obiektu

W nowej sesji ARCore przeprowadź test trafienia 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ą pozę 3D, wartość ARRaycast.trackingState będzie wynosić Tracking. W przeciwnym razie rozpocznie się od Limited, a po uzyskaniu przez ARCore dokładnej pozycji 3D przejdzie do Tracking. Gdy stan śledzenia zmieni się na Tracking, nie wróci on do stanu Limited.