دليل مطوّري مواضع الإعلانات الفورية لمؤسسة AR Foundation

تعرَّف على كيفية استخدام واجهة برمجة التطبيقات Instant Placement API أو عمليات بث الأشعة المستمرة في تطبيقاتك.

المتطلبات الأساسية

احرص على فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore قبل المتابعة.

أسماء المفاهيم

قد تختلف أسماء بعض المفاهيم والأساليب بين AR Foundation و حزمة تطوير البرامج (SDK) لـ ARCore في Unity. تم إدراج هذه الشروط في الجدول أدناه لتسهيل الرجوع إليها.

AR Foundation حزمة تطوير البرامج (SDK) لـ ARCore في Unity
عمليات بث أشعة مستمرة موضع إعلان فوري
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(لا يتوفّر ما يعادله) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

المتطلبات الأساسية

يفترض هذا الدليل أنّك سبق لك تثبيت Unity وضبطه. إذا لم يكن الأمر كذلك، اطّلِع على البدء باستخدام إضافات ARCore لإطار عمل AR Foundation لخطوات التثبيت والإعداد.

ضبط جلسة جديدة باستخدام ARRaycastManager

تتوفّر ميزة "الموقع الفوري" (عمليات بث أشعة مستمرة) بشكل تلقائي مع حزمة AR Foundation. اتّبِع الخطوات التالية لإعداد المشهد.

AR Foundation 4.x

  1. أضِف عناصر اللعبة المحدّدة مسبقًا AR Session Origin و AR Session.

  2. أضِف المكوّن AR Raycast Manager إلى عنصر اللعبة AR Session Origin.

عندما لا يكون Raycast Prefab فارغًا، ARRaycastManager ستُنشئ النموذج المُعدّ مسبقًا وستُزامن تلقائيًا وضعه مع وضع ARRaycast.

AR Foundation 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. بخلاف ذلك، سيبدأ برمز Limited وينتقل إلى رمز Tracking بعد أن تحصل تقنية ARCore على وضع ثلاثي الأبعاد دقيق. بعد أن تصبح حالة التتبّع Tracking، لن تعود إلى Limited.