با نحوه استفاده از Instant Placement API یا پرتوهای دائمی در برنامههای خود آشنا شوید.
پیش نیازها
قبل از ادامه، مطمئن شوید که مفاهیم اساسی AR و نحوه پیکربندی یک جلسه ARCore را درک کرده اید.
نام های مفهومی
نام برخی مفاهیم و روشها ممکن است بین AR Foundation و ARCore SDK for Unity متفاوت باشد. این موارد برای ارجاع آسان در جدول زیر آورده شده است.
بنیاد AR | ARCore SDK برای Unity |
پرتوهای مداوم | قرار دادن فوری |
ARRaycastManager.AddRaycast(Vector2, float) | Frame.RaycastInstantPlacement(float, float, float, out TrackableHit) |
ARRaycast | TrackableHit |
(بدون معادل) | InstantPlacementPoint |
ARRaycast.trackingState | InstantPlacementPointTrackingMethod |
پیش نیازها
این راهنما فرض می کند که شما قبلا Unity را نصب و پیکربندی کرده اید. اگر نه، برای مراحل نصب و راهاندازی ، شروع به کار با برنامههای افزودنی ARCore برای بنیاد AR را ببینید.
یک جلسه جدید را با ARRaycastManager
پیکربندی کنید
Instant Placement (Raycasts مداوم) با بسته AR Foundation خارج از جعبه موجود است. برای تنظیم صحنه خود این مراحل را دنبال کنید.
بنیاد 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
خواهد بود. در غیر این صورت، زمانی که ARCore ژست سه بعدی دقیقی داشته باشد، با Limited
شروع می شود و به Tracking
منتقل می شود. هنگامی که وضعیت ردیابی Tracking
تبدیل شد، به Limited
بر نمی گردد.