תוכלו ללמוד איך להשתמש ב-Instant Placement API או בraycasts קבועים באפליקציות שלכם.
דרישות מוקדמות
לפני שממשיכים, חשוב לוודא שאתם מבינים את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן של ARCore.
שמות מושגים
השמות של מושגים ושיטות מסוימים עשויים להיות שונים בין השם של AR Foundation לבין ARCore SDK ל-Unity. הפרטים מפורטים בטבלה הבאה כדי שתוכלו לעיין בהם בקלות.
קרן AR | ARCore SDK ל-Unity |
קרני לייזר קבועות | מיקום מיידי |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(ללא שווי ערך) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
דרישות מוקדמות
המדריך הזה מניח שכבר התקנתם את Unity והגדרתם אותן. אם לא, עיינו במאמר תחילת העבודה עם תוספי ARCore for AR Foundation כדי להבין את שלבי ההתקנה וההגדרה.
הגדרת סשן חדש עם ARRaycastManager
ניתן להשתמש ב'מיקום מיידי' (Raycasts) באופן מיידי עם חבילת ה-AR מהיסוד. אלה השלבים להגדרת הסצנה.
קרן AR 4.x
מוסיפים את האובייקטים המוגדרים מראש של המשחק AR Session Origin ו-AR Session.
מוסיפים את הרכיב AR Raycast Manager לאובייקט המשחק AR Session Origin.
כשהערך של Raycast Prefab הוא לא אפס, הפונקציה ARRaycastManager
תיצור את ההעדפות מראש ותסנכרן באופן אוטומטי את התנוחה של ARRaycast
.
קרן AR 5.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
.