כאן אפשר לקרוא איך להשתמש ב-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
מוסיפים את אובייקטי המשחק המוגדרים מראש AR Session Origin ו-AR Session.

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

אם Raycast Prefab לא ריק, הפונקציה ARRaycastManager תיצור מופע של ה-Prefab ותסנכרן אוטומטית את המיקום שלו עם המיקום של ARRaycast.
AR Foundation 5.x
מוסיפים את אובייקטי המשחק המוגדרים מראש XR Origin ו-AR Session.

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

אם Raycast Prefab לא ריק, הפונקציה ARRaycastManager תיצור מופע של ה-Prefab ותסנכרן אוטומטית את המיקום שלו עם המיקום של ARRaycast.
AR Foundation 6.x
מוסיפים את אובייקטי המשחק המוגדרים מראש XR Origin ו-AR Session.

מוסיפים את הרכיב 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.