AR Foundation için Anında Yerleşim geliştirici kılavuzu

Anında Yerleşim API'si veya kalıcı raycast'ler kullanabilirsiniz.

Ön koşullar

Temel artırılmış gerçeklik kavramlarını anladığınızdan emin olun ve devam etmeden önce ARCore oturumunun nasıl yapılandırılacağı hakkında daha fazla bilgi edinin.

Kavram adları

Bazı kavram ve yöntemlerin adları AR Foundation ile Unity için ARCore SDK'sı. Bunlar, kolayca ulaşabilmeniz için aşağıdaki tabloda listelenmiştir.

Artırılmış Gerçeklik (AR) Vakfı Unity için ARCore SDK'sı
Kalıcı ışın ışınları Anında Yerleşim
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(Denklik yok) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

Ön koşullar

Bu kılavuzda, Unity'yi daha önce yüklediğiniz ve yapılandırdığınız varsayılmaktadır. Değilse bkz. AR Vakfı için ARCore Uzantılarını Kullanmaya Başlama kurulum ve kurulum adımlarına göz atın.

ARRaycastManager ile yeni bir oturum yapılandırın

AR ile kullanıma hazır anında Yerleşim (kalıcı raycast'ler) kullanılabilir Temel paket. Sahnenizi oluşturmak için aşağıdaki adımları uygulayın.

AR Foundation 4.x

  1. Önceden tanımlanmış oyun nesnelerini ekleyin: AR Session Origin ve AR Session.

  2. AR Raycast Manager bileşenini AR Session Origin oyun nesnesi.

Raycast Prefab null olmadığında ARRaycastManager ilk adımı oluşturur ve pozunu ARRaycast.

AR Foundation 5.x

  1. Önceden tanımlanmış oyun nesnelerini ekleyin: XR Origin ve AR Session.

  2. AR Raycast Manager bileşenini XR Origin oyun nesnesi.

Raycast Prefab null olmadığında ARRaycastManager ilk adımı oluşturur ve pozunu ARRaycast.

Nesne yerleştirme

Yeni bir ARCore oturumunda, 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 izleme durumunu izleme

ARCore'un doğru bir 3D pozu varsa ARRaycast.trackingState Tracking olur. Aksi takdirde Limited ile başlar. ve ARCore doğru 3D poz verdiğinde Tracking'e geçiş yapar. İzleme durumu Tracking olduğunda bu işlem Limited.