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
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 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
.