Hier erfahren Sie, wie Sie die Instant Placement API oder persistente Raycasts in Ihren eigenen Apps.
Vorbereitung
Machen Sie sich mit den grundlegenden AR-Konzepten vertraut. und Konfigurieren einer ARCore-Sitzung beschrieben, bevor du fortfährst.
Konzeptnamen
Die Namen bestimmter Konzepte und Methoden können zwischen AR Foundation und dem ARCore SDK für Unity Diese sind in der Tabelle unten aufgeführt.
Grundlagen von AR | ARCore SDK für Unity |
Dauerhafte Raycasts | Sofortiges Placement |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Keine Äquivalenz) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Vorbereitung
In diesem Handbuch wird davon ausgegangen, dass Sie Unity bereits installiert und konfiguriert haben. Falls nicht, lesen Sie Erste Schritte mit ARCore Extensions for AR Foundation .
Neue Sitzung mit ARRaycastManager
konfigurieren
Die sofortige Platzierung (persistente Raycasts) ist bei AR sofort verfügbar. Foundation-Paket. Führen Sie die folgenden Schritte aus, um die Szene einzurichten.
AR Foundation 4.x
Füge die vordefinierten Spielobjekte AR Session Origin und AR Session.
Fügen Sie die Komponente AR Raycast Manager zur AR Session Origin Spielobjekt.
Wenn Raycast Prefab nicht null ist, ARRaycastManager
instanziiert die Prefab und synchronisiert ihre Pose automatisch mit der Pose der
ARRaycast
AR Foundation 5.x
Füge die vordefinierten Spielobjekte XR Origin und AR Session.
Fügen Sie die Komponente AR Raycast Manager zur XR Origin Spielobjekt.
Wenn Raycast Prefab nicht null ist, ARRaycastManager
instanziiert die Prefab und synchronisiert ihre Pose automatisch mit der Pose der
ARRaycast
Objekt platzieren
Führe in einer neuen ARCore-Sitzung einen Treffertest mit
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.
…
}
}
ARRaycast-Tracking-Status überwachen
Wenn ARCore eine korrekte 3D-Pose hat, ist der ARRaycast.trackingState
Tracking
.
Andernfalls beginnt sie mit Limited
.
und wechseln zu Tracking
, sobald ARCore eine genaue 3D-Pose hat. Sobald der Tracking-Status Tracking
lautet,
wird nicht wieder auf
Limited