瞭解如何在自家應用程式中使用 Instant Placement API 或持久性光柵。
必要條件
請務必先瞭解基本 AR 概念,以及如何設定 ARCore 工作階段,再繼續操作。
概念名稱
AR Foundation 和 Unity 適用的 ARCore SDK 之間,某些概念和方法的名稱可能不同。下表列出這些項目,方便您參考。
必要條件
本指南假設您已安裝及設定 Unity。如果沒有,請參閱「AR Foundation 適用的 ARCore 擴充功能入門指南」一文,瞭解安裝和設定步驟。
使用 ARRaycastManager
設定新工作階段
只要使用 AR Foundation 套件,即可立即放置 (永久性光線投射)。請按照下列步驟設定場景。
AR Foundation 4.x
新增預先定義的遊戲物件 AR Session Origin 和 AR Session。
將 AR Raycast Manager 元件新增至 AR Session Origin 遊戲物件。
如果 Raycast 預設結構體不為空值,ARRaycastManager
會將預設結構體例項化,並自動將其姿勢與 ARRaycast
的姿勢同步。
AR Foundation 5.x
新增預先定義的遊戲物件 XR Origin 和 AR Session。
將 AR Raycast Manager 元件新增至 XR Origin 遊戲物件。
如果 Raycast 預設結構體不為空值,ARRaycastManager
會將預設結構體例項化,並自動將其姿勢與 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
。