Aprenda a usar a API Instant Placement ou raycasts persistentes nos seus apps.
Pré-requisitos
Antes de continuar, entenda os conceitos fundamentais de RA e como configurar uma sessão do ARCore.
Nomes de conceitos
Os nomes de alguns conceitos e métodos podem ser diferentes entre o AR Foundation e o SDK do ARCore para Unity. Eles estão listados na tabela abaixo para facilitar a consulta.
| AR Foundation | SDK do ARCore para Unity |
| Raycasts persistentes | Instant Placement |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
| (Sem equivalência) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Pré-requisitos
Este guia pressupõe que você já instalou e configurou o Unity. Caso contrário, consulte Introdução às extensões do ARCore para AR Foundation para conferir as etapas de instalação e configuração.
Configurar uma nova sessão com ARRaycastManager
O Instant Placement (raycasts persistentes) está disponível imediatamente com o pacote AR Foundation. Siga estas etapas para configurar a cena.
AR Foundation 4.x
Adicione os objetos de jogo predefinidos AR Session Origin e AR Session.

Adicione o componente AR Raycast Manager ao AR Session Origin objeto de jogo.

Quando o Raycast Prefab não for nulo, ARRaycastManager
vai instanciar o prefab e sincronizar automaticamente a pose dele com a de
ARRaycast.
AR Foundation 5.x
Adicione os objetos de jogo predefinidos XR Origin e AR Session.

Adicione o componente AR Raycast Manager ao XR Origin objeto de jogo.

Quando o Raycast Prefab não for nulo, ARRaycastManager
vai instanciar o prefab e sincronizar automaticamente a pose dele com a de
ARRaycast.
AR Foundation 6.x
Adicione os objetos de jogo predefinidos XR Origin e AR Session.

Adicione o componente AR Raycast Manager ao XR Origin objeto de jogo.

Quando o Raycast Prefab não for nulo, ARRaycastManager
vai instanciar o prefab e sincronizar automaticamente a pose dele com a de
ARRaycast.
Colocar um objeto
Em uma nova sessão do ARCore, realize um teste de hit usando
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.
…
}
}
Monitorar o estado de rastreamento do ARRaycast
Se o ARCore tiver uma pose 3D precisa, o ARRaycast.trackingState será Tracking.
Caso contrário, ele vai começar com Limited
e fazer a transição para Tracking quando o ARCore tiver uma pose 3D precisa. Depois que o estado de rastreamento se tornar Tracking,
ele não vai reverter para
Limited.