AR 基本概念的即時刊登位置開發人員指南

瞭解如何使用 Instant Placement API,或 或「持續光譜」

必要條件

請務必瞭解基本 AR 概念 以及如何在繼續操作前設定 ARCore 工作階段

概念名稱

AR Foundation 和 Unity 專用 ARCore SDK。我們將列於下表中,方便您參考。

AR 基礎 Unity 專用 ARCore SDK
持續光線照射 即時刊登位置
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(無對等項目) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

必要條件

本指南假設您已安裝並設定 Unity。如果沒有,請參閱 開始使用 AR Foundation 適用的 ARCore 擴充功能 瞭解安裝與設定步驟

使用 ARRaycastManager 設定新的工作階段

立即透過 AR 提供即時刊登位置 (持續性光線燒錄內容) 基礎套件按照下列步驟設定場景。

AR 基礎 4.x

  1. 新增預先定義的遊戲物件 AR Session OriginAR Session

  2. AR Raycast Manager 元件新增至 AR Session Origin 遊戲物件。

當 Raycast Prefab 不是空值時,ARRaycastManager 會實例化 Prefab,並自動將 Prefab 的姿態與 姿態同步 ARRaycast

AR 基礎 5.x

  1. 新增預先定義的遊戲物件 XR OriginAR Session

  2. AR Raycast Manager 元件新增至 XR Origin 遊戲物件。

當 Raycast Prefab 不是空值時,ARRaycastManager 會實例化 Prefab,並自動將 Prefab 的姿態與 姿態同步 ARRaycast

放置物件

在新的 ARCore 工作階段中,使用 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 追蹤狀態

如果 ARCore 設有正確的 3D 姿勢,ARRaycast.trackingState 會是 Tracking。 否則,開頭會是 Limited ,等到 ARCore 取得準確的 3D 姿勢後,再轉換至 Tracking。追蹤狀態變為 Tracking 後, 不會還原為 Limited