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

تعرّف على كيفية استخدام Instantplacement API، أو بث شعاعي دائم، في تطبيقاتك الخاصة.

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

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

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

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

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

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

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

إعداد جلسة جديدة مع ARRaycastManager

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

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

  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