Узнайте, как использовать API мгновенного размещения , или постоянные трассировки лучей , в своих приложениях.
Предварительные требования
Прежде чем продолжить, убедитесь, что вы понимаете основные концепции дополненной реальности и как настроить сессию ARCore .
Названия концепций
Названия некоторых концепций и методов могут отличаться в AR Foundation и ARCore SDK для Unity. Для удобства они перечислены в таблице ниже.
| Фонд AR | ARCore SDK для Unity |
| Постоянная трассировка лучей | Мгновенное трудоустройство |
ARRaycastManager.AddRaycast(Vector2, float) | Frame.RaycastInstantPlacement(float, float, float, out TrackableHit) |
ARRaycast | TrackableHit |
| (Эквивалентность отсутствует) | InstantPlacementPoint |
ARRaycast.trackingState | InstantPlacementPointTrackingMethod |
Предварительные требования
В этом руководстве предполагается, что вы уже установили и настроили Unity. Если нет, см. раздел «Начало работы с расширениями ARCore для AR Foundation» для получения инструкций по установке и настройке.
Настройте новую сессию с помощью ARRaycastManager
Функция мгновенного размещения (постоянная трассировка лучей) доступна по умолчанию в пакете AR Foundation. Выполните следующие шаги для настройки сцены.
AR Foundation 4.x
Добавьте предопределенные игровые объекты AR Session Origin и AR Session .

Добавьте компонент AR Raycast Manager в игровой объект AR Session Origin .

Если Raycast Prefab не равен null, ARRaycastManager создаст экземпляр префаба и автоматически синхронизирует его положение с положением ARRaycast .
AR Foundation 5.x
Добавьте предопределенные игровые объекты XR Origin и AR Session .

Добавьте компонент AR Raycast Manager в игровой объект XR Origin .

Если Raycast Prefab не равен null, ARRaycastManager создаст экземпляр префаба и автоматически синхронизирует его положение с положением ARRaycast .
AR Foundation 6.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 и перейдет в Tracking , как только ARCore получит точную 3D-позу. После того, как состояние отслеживания станет Tracking , оно не вернется к Limited .