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

یاد بگیرید که چگونه از API جایگذاری فوری یا raycastهای مداوم در برنامه‌های خود استفاده کنید.

پیش‌نیازها

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

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

نام مفاهیم و روش‌های خاص ممکن است بین بنیاد AR و ARCore SDK برای Unity متفاوت باشد. این موارد برای مرجع آسان در جدول زیر فهرست شده‌اند.

بنیاد AR کیت توسعه نرم‌افزار ARCore برای یونیتی
پخش‌های پرتوی مداوم قرار دادن فوری
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(معادلی وجود ندارد) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

پیش‌نیازها

این راهنما فرض می‌کند که شما قبلاً Unity را نصب و پیکربندی کرده‌اید. در غیر این صورت، برای مراحل نصب و راه‌اندازی به بخش «شروع به کار با افزونه‌های ARCore برای بنیاد AR» مراجعه کنید.

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

قابلیت Instant Placement (پرتوهای پخش مداوم) به صورت پیش‌فرض در بسته AR Foundation موجود است. برای تنظیم صحنه خود، این مراحل را دنبال کنید.

بنیاد واقعیت افزوده ۴.x

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

  2. کامپوننت AR Raycast Manager را به شیء بازی AR Session Origin اضافه کنید.

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

بنیاد AR 5.x

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

  2. کامپوننت AR Raycast Manager را به شیء بازی XR Origin اضافه کنید.

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

بنیاد AR 6.x

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

  2. کامپوننت AR Raycast Manager را به شیء بازی XR Origin اضافه کنید.

وقتی Raycast Prefab تهی نباشد، ARRaycastManager از prefab نمونه‌سازی می‌کند و به طور خودکار حالت آن را با حالت 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 خواهد بود. در غیر این صورت، با Limited شروع می‌شود و به محض اینکه ARCore حالت سه‌بعدی دقیقی داشته باشد، به Tracking تغییر می‌کند. وقتی حالت ردیابی Tracking تبدیل شود، به Limited برنمی‌گردد.