Hier erfahren Sie, wie Sie die Instant Placement APIoder persistente Raycastsin Ihren eigenen Apps verwenden.
Vorbereitung
Sie sollten die grundlegenden AR-Konzepte und die Konfiguration einer ARCore-Sitzung kennen, bevor Sie fortfahren.
Konzeptnamen
Die Namen bestimmter Konzepte und Methoden können sich zwischen AR Foundation und dem ARCore SDK for Unity unterscheiden. Sie sind in der folgenden Tabelle aufgeführt.
| AR Foundation | ARCore SDK for Unity |
| Persistente Raycasts | Instant Placement |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
| (Keine Entsprechung) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Vorbereitung
In diesem Leitfaden wird davon ausgegangen, dass Sie Unity bereits installiert und konfiguriert haben. Wenn nicht, finden Sie unter Erste Schritte mit ARCore Extensions for AR Foundation die Installations- und Konfigurationsschritte.
Neue Sitzung mit ARRaycastManager konfigurieren
Instant Placement (persistente Raycasts) ist mit dem AR Foundation-Paket sofort verfügbar. Führen Sie die folgenden Schritte aus, um Ihre Szene einzurichten.
AR Foundation 4.x
Fügen Sie die vordefinierten Spielobjekte AR Session Origin und AR Session hinzu.

Fügen Sie dem AR Session Origin Spielobjekt die AR Raycast Manager Komponente hinzu.

Wenn Raycast Prefab nicht null ist, ARRaycastManager
instanziiert das Prefab und synchronisiert seine Pose automatisch mit der Pose von
ARRaycast.
AR Foundation 5.x
Fügen Sie die vordefinierten Spielobjekte XR Origin und AR Session hinzu.

Fügen Sie dem XR Origin Spielobjekt die Komponente AR Raycast Manager hinzu.

Wenn Raycast Prefab nicht null ist, ARRaycastManager
instanziiert das Prefab und synchronisiert seine Pose automatisch mit der Pose von
ARRaycast.
AR Foundation 6.x
Fügen Sie die vordefinierten Spielobjekte XR Origin und AR Session hinzu.

Fügen Sie dem XR Origin Spielobjekt die Komponente AR Raycast Manager hinzu.

Wenn Raycast Prefab nicht null ist, ARRaycastManager
instanziiert das Prefab und synchronisiert seine Pose automatisch mit der Pose von
ARRaycast.
Objekt platzieren
Führen Sie in einer neuen ARCore-Sitzung eine Trefferprüfung mit
ARRaycastManager.AddRaycast(Vector2, float) aus.
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-Trackingstatus überwachen
Wenn ARCore eine genaue 3D-Pose hat, ist ARRaycast.trackingState gleich Tracking.
Andernfalls beginnt es mit Limited
und wechselt zu Tracking, sobald ARCore eine genaue 3D-Pose hat. Sobald der Trackingstatus Tracking,
wird er nicht mehr zu
Limited zurückkehren.