자체 앱에서 Instant Placement API 또는 지속적인 레이캐스트를 사용하는 방법을 알아보세요.
기본 요건
계속하기 전에 기본 AR 개념과 ARCore 세션을 구성하는 방법을 이해해야 합니다.
개념 이름
특정 개념과 메서드의 이름은 AR Foundation과 Unity용 ARCore SDK 간에 다를 수 있습니다. 참고를 위해 아래 표에 나열되어 있습니다.
AR Foundation | Unity용 ARCore SDK |
영구 레이캐스트 | 인스턴트 게재위치 |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(상응하지 않음) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
기본 요건
이 가이드에서는 이미 Unity를 설치하고 구성했다고 가정합니다. 그렇지 않은 경우 AR Foundation용 ARCore 확장 프로그램 시작하기에서 설치 및 설정 단계를 참고하세요.
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
의 포즈와 자동으로 동기화합니다.
객체 배치
새 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
로 되돌아가지 않습니다.