瞭解如何在自己的應用程式中使用即時放置 API 或持續性光線投射。
必要條件
請務必先瞭解基本 AR 概念,以及如何設定 ARCore 工作階段,再繼續操作。
概念名稱
AR Foundation 和 ARCore SDK for Unity 的某些概念和方法名稱可能不同。下表列出這些資訊方便參考。
| AR Foundation | ARCore SDK for Unity |
| 持續性光線投射 | 即時放置 |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
| (無對應項目) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
必要條件
本指南假設您已安裝及設定 Unity。如果沒有,請參閱「開始使用 AR Foundation 的 ARCore Extensions」,瞭解安裝和設定步驟。
使用 ARRaycastManager 設定新工作階段
AR Foundation 套件提供立即可用的即時放置功能 (持續性光線投射)。請按照下列步驟設定場景。
AR Foundation 4.x
新增預先定義的遊戲物件 AR Session Origin 和 AR Session。

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

當 Raycast Prefab 不是空值時,ARRaycastManager
會例項化預先製作的物件,並自動將其姿態與 ARRaycast 的姿態同步。
AR Foundation 5.x
新增預先定義的遊戲物件 XR Origin 和 AR Session。

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

當 Raycast Prefab 不是空值時,ARRaycastManager
會例項化預先製作的物件,並自動將其姿態與 ARRaycast 的姿態同步。
AR Foundation 6.x
新增預先定義的遊戲物件 XR Origin 和 AR Session。

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

當 Raycast Prefab 不是空值時,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。