Dowiedz się, jak używać interfejsu Instant Placement API lub trwałych rzutów promieniowych w swoich aplikacjach.
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 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 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ć.
Skonfiguruj nową sesję w aplikacji ARRaycastManager
Błyskawiczne miejsce docelowe (trwałe raycasty) jest dostępne od razu w pakiecie AR Foundation. Aby skonfigurować scenę, wykonaj te czynności.
AR Foundation 4.x
Dodaj wstępnie zdefiniowane obiekty gry AR Session Origin i AR Session.
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
Dodaj wstępnie zdefiniowane obiekty gry XR Origin i AR Session.
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 działań za pomocą polecenia 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 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
.