راهنمای برنامه‌نویس Instant Placement برای بنیاد AR

با نحوه استفاده از Instant Placement API یا پرتوهای دائمی در برنامه‌های خود آشنا شوید.

پیش نیازها

قبل از ادامه، مطمئن شوید که مفاهیم اساسی AR و نحوه پیکربندی یک جلسه ARCore را درک کرده اید.

نام های مفهومی

نام برخی مفاهیم و روش‌ها ممکن است بین AR Foundation و ARCore SDK for 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 را ببینید.

یک جلسه جدید را با ARRaycastManager پیکربندی کنید

Instant Placement (Raycasts مداوم) با بسته AR Foundation خارج از جعبه موجود است. برای تنظیم صحنه خود این مراحل را دنبال کنید.

بنیاد AR 4.x

  1. اشیاء بازی از پیش تعریف شده AR Session Origin و AR Session را اضافه کنید.

  2. جزء AR Raycast Manager به شی بازی AR Session Origin اضافه کنید.

هنگامی که Raycast Prefab پوچ نباشد، ARRaycastManager پیش ساخته را نمونه سازی می کند و به طور خودکار حالت آن را با حالت ARRaycast همگام می کند.

بنیاد AR 5.x

  1. اشیاء بازی از پیش تعریف شده XR Origin و AR Session را اضافه کنید.

  2. جزء AR Raycast Manager به شی بازی XR Origin اضافه کنید.

هنگامی که Raycast Prefab پوچ نباشد، 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 ژست سه بعدی دقیقی داشته باشد، ARRaycast.trackingState Tracking خواهد بود. در غیر این صورت، زمانی که ARCore ژست سه بعدی دقیقی داشته باشد، با Limited شروع می شود و به Tracking منتقل می شود. هنگامی که وضعیت ردیابی Tracking تبدیل شد، به Limited بر نمی گردد.