了解如何在您自己的应用中使用 Instant Placement API(即持久性光线投射)。
前提条件
确保您了解基本 AR 概念以及如何配置 ARCore 会话,然后再继续。
概念名称
对于 AR 基础和 ARCore SDK for Unity,某些概念和方法的名称可能有所不同。下表列出了这些建议,以便您轻松参考。
前提条件
本指南假定您已安装并配置了 Unity。否则,请参阅 ARCore Extensions for AR Foundation 使用入门中的安装和设置步骤。
配置与 ARRaycastManager
的新会话
AR 基础软件包中提供了开箱即用的即时放置(持久性光线投射)。请按照以下步骤设置您的场景。
AR Foundation 4.x
添加预定义的游戏对象 AR Session Origin 和 AR Session。
将 AR Raycast Manager 组件添加到 AR Session Origin 游戏对象中。
当 Raycast Prefab 不为 null 时,ARRaycastManager
会实例化预制件,并自动将其姿势与 ARRaycast
的姿势同步。
AR 基础 5.x
添加预定义的游戏对象 XR Origin 和 AR Session。
将 AR Raycast Manager 组件添加到 XR Origin 游戏对象中。
当 Raycast Prefab 不为 null 时,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
。