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

הוראות לשימוש Instant Placement API, או שידורים משודרים באופן קבוע באפליקציות שלכם.

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

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

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

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

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

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

המדריך הזה מבוסס על ההנחה שכבר התקנתם והגדרתם את Unity. אם לא: תחילת העבודה עם תוספי ARCore ל-AR Foundation עבור שלבי ההתקנה וההגדרה.

הגדרת סשן חדש באמצעות ARRaycastManager

התכונה 'מיקום מיידי' (שידורים קבועים) זמינה באופן מיידי עם ה-AR חבילת הבסיס. פועלים לפי השלבים הבאים כדי להגדיר את הסצנה.

AR Foundation 4.x

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

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

אם הערך של Raycast Prefab לא מוגדר כ-null, ARRaycastManager יפיק את הטעמה ותסנכרן באופן אוטומטי את התנוחה שלו ARRaycast

AR Foundation 5.x

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

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

אם הערך של Raycast Prefab לא מוגדר כ-null, 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