تعرَّف على كيفية استخدام واجهة برمجة تطبيقات المواضع الفورية أو عمليات البث المستمر في تطبيقاتك.
المتطلبات الأساسية
قبل المتابعة، تأكد من فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة 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
أضِف عنصرَي اللعبة المحدّدَين مسبقًا AR Session Origin وAR Session.
أضِف المكوِّن AR Raycast Manager إلى عنصر اللعبة AR Session Origin.
وعندما لا تكون قيمة Raycast Prefab فارغة، ستنشئ ARRaycastManager
تمثيلاً فوريًا للدالة السابقة وتزامنها تلقائيًا مع وضع ARRaycast
.
الإصدار 5.x من تطبيق AR Foundation
أضِف عنصرَي اللعبة المحدّدَين مسبقًا 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
.