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

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

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

قبل المتابعة، تأكد من فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore.

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

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

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

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

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

ضبط جلسة جديدة مع ARRaycastManager

تتوفّر ميزة "الموضع الفوري" (بيانات raycast المستمرة) بدون علبتها في حزمة AR Foundation. اتّبِع الخطوات التالية لإعداد المشهد.

الإصدار 4.x من AR Foundation

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

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

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

الإصدار 5.x من تطبيق AR Foundation

  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.