تعرَّف على كيفية استخدام واجهة برمجة التطبيقات Instant Placement API أو عمليات البحث عن الأشعة المستمرة في تطبيقاتك.
المتطلبات الأساسية
قبل المتابعة، تأكَّد من فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore.
أسماء المفاهيم
قد تختلف أسماء بعض المفاهيم والطُرق بين AR Foundation وARCore SDK for 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 Extensions مع AR Foundation لمعرفة خطوات التثبيت والإعداد.
ضبط جلسة جديدة باستخدام "ARRaycastManager"
تتوفّر ميزة "وضع العناصر الفوري" (عمليات البحث عن الأشعة الثابتة) تلقائيًا مع حزمة AR Foundation. اتّبِع الخطوات التالية لإعداد المشهد.
AR Foundation 4.x
أضِف عناصر اللعبة المحدّدة مسبقًا AR Session Origin وAR Session.

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

عندما لا تكون قيمة Raycast Prefab فارغة، سيؤدي ARRaycastManager إلى إنشاء نسخة من العنصر الجاهز ومزامنة وضعيته تلقائيًا مع وضعية ARRaycast.
AR Foundation 5.x
أضِف عناصر اللعبة المحدّدة مسبقًا XR Origin وAR Session.

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

عندما لا تكون قيمة Raycast Prefab فارغة، سيؤدي ARRaycastManager إلى إنشاء نسخة من العنصر الجاهز ومزامنة وضعيته تلقائيًا مع وضعية ARRaycast.
AR Foundation 6.x
أضِف عناصر اللعبة المحدّدة مسبقًا XR Origin وAR Session.

أضِف مكوّن 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.