המדריך למפתחים למיקומים מיידיים של AR Foundation

כאן אפשר לקרוא איך להשתמש ב-Instant Placement API או ב-persistent raycasts באפליקציות שלכם.

דרישות מוקדמות

לפני שממשיכים, חשוב להבין את המושגים הבסיסיים של AR ואיך מגדירים סשן ARCore.

שמות של מושגים

יכול להיות שיהיו הבדלים בשמות של מושגים ושיטות מסוימים בין AR Foundation לבין ARCore SDK for Unity. הן מפורטות בטבלה שלמטה לנוחותכם.

AR Foundation ARCore SDK for Unity
הטלות קרניים מתמשכות מיקום מיידי
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(אין שקילות) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

דרישות מוקדמות

במדריך הזה אנחנו יוצאים מנקודת הנחה שכבר התקנתם והגדרתם את Unity. אם לא, במאמר תחילת העבודה עם ARCore Extensions for 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 תיצור מופע של ה-Prefab ותסנכרן אוטומטית את המיקום שלו עם המיקום של ARRaycast.

‫AR Foundation 5.x

  1. מוסיפים את אובייקטי המשחק המוגדרים מראש XR Origin ו-AR Session.

  2. מוסיפים את הרכיב AR Raycast Manager לאובייקט המשחק XR Origin.

אם Raycast Prefab לא ריק, הפונקציה ARRaycastManager תיצור מופע של ה-Prefab ותסנכרן אוטומטית את המיקום שלו עם המיקום של ARRaycast.

‫AR Foundation 6.x

  1. מוסיפים את אובייקטי המשחק המוגדרים מראש XR Origin ו-AR Session.

  2. מוסיפים את הרכיב AR Raycast Manager לאובייקט המשחק XR Origin.

אם Raycast Prefab לא ריק, הפונקציה ARRaycastManager תיצור מופע של ה-Prefab ותסנכרן אוטומטית את המיקום שלו עם המיקום של 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.