Kendi uygulamalarınızda Anında Yerleşim API'sini veya kalıcı ışın izlemeyi nasıl kullanacağınızı öğrenin.
Ön koşullar
Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.
Kavram adları
Belirli kavram ve yöntemlerin adları, AR Foundation ile Unity için ARCore SDK'sı arasında farklılık gösterebilir. Bunlar, kolay referans için aşağıdaki tabloda listelenmiştir.
AR Foundation | Unity için ARCore SDK'sı |
Kalıcı ışın izleme | Anında Yerleşim |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Eşdeğerlik yok) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Ön koşullar
Bu kılavuzda, Unity'yi zaten yükleyip yapılandırdığınız varsayılmaktadır. Yüklü değilse yükleme ve kurulum adımları için AR Foundation için ARCore uzantılarını kullanmaya başlama başlıklı makaleyi inceleyin.
ARRaycastManager
ile yeni oturum yapılandırın
Anında Yerleşim (kalıcı ışın izleme), AR Foundation paketiyle birlikte kullanıma hazırdır. Sahnenizi ayarlamak için aşağıdaki adımları uygulayın.
AR Foundation 4.x
Önceden tanımlanmış oyun nesnelerini AR Session Origin ve AR Session ekleyin.
AR Raycast Manager bileşenini AR Session Origin oyun nesnesine ekleyin.
Raycast Prefab null olmadığında ARRaycastManager
, prefab'ı örneklendirir ve pozunu ARRaycast
'in pozuyla otomatik olarak senkronize eder.
AR Foundation 5.x
Önceden tanımlanmış oyun nesnelerini XR Origin ve AR Session ekleyin.
AR Raycast Manager bileşenini XR Origin oyun nesnesine ekleyin.
Raycast Prefab null olmadığında ARRaycastManager
, prefab'ı örneklendirir ve pozunu ARRaycast
'in pozuyla otomatik olarak senkronize eder.
Nesne yerleştirme
Yeni bir ARCore oturumunda ARRaycastManager.AddRaycast(Vector2, float)
kullanarak isabet testi yapın.
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 izleme durumunu izleme
ARCore'un doğru bir 3D duruşu varsa ARRaycast.trackingState
Tracking
olur.
Aksi takdirde, Limited
ile başlar ve ARCore doğru bir 3D duruş elde ettiğinde Tracking
olarak değişir. İzleme durumu Tracking
olduğunda Limited
durumuna geri dönmez.