Pelajari cara menggunakan Instant Placement API, atau sinar sinar persisten, di aplikasi Anda sendiri.
Prasyarat
Pastikan Anda memahami konsep dasar AR dan cara mengonfigurasi sesi ARCore sebelum melanjutkan.
Nama konsep
Nama konsep dan metode tertentu mungkin berbeda antara AR Foundation dan ARCore SDK untuk Unity. Hal tersebut tercantum dalam tabel di bawah untuk memudahkan referensi.
Dasar-Dasar AR | ARCore SDK untuk Unity |
Transparan persisten | Penempatan Instan |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Tidak ada padanan) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Prasyarat
Panduan ini mengasumsikan bahwa Anda telah menginstal dan mengonfigurasi Unity. Jika tidak, lihat kursus Getting started with ARCore Extensions for AR Foundation untuk mengetahui langkah-langkah penginstalan dan penyiapan.
Konfigurasi sesi baru dengan ARRaycastManager
Penempatan Instan (sinar persisten) tersedia dan siap digunakan dengan AR paket dasar. Ikuti langkah-langkah berikut untuk menyiapkan suasana.
Dasar-Dasar AR 4.x
Tambahkan objek game yang telah ditentukan sebelumnya AR Session Origin dan AR Session.
Tambahkan komponen AR Raycast Manager ke dalam Objek game AR Session Origin.
Jika Raycast Prefab bukan null, ARRaycastManager
akan membuat instance prefab dan secara
otomatis menyinkronkan posenya dengan pose
ARRaycast
.
Dasar-Dasar AR 5.x
Tambahkan objek game yang telah ditentukan sebelumnya XR Origin dan AR Session.
Tambahkan komponen AR Raycast Manager ke dalam Objek game XR Origin.
Jika Raycast Prefab bukan null, ARRaycastManager
akan membuat instance prefab dan secara
otomatis menyinkronkan posenya dengan pose
ARRaycast
.
Tempatkan objek
Dalam sesi ARCore baru, lakukan hit test menggunakan
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.
…
}
}
Memantau status pelacakan ARRaycast
Jika ARCore memiliki pose 3D yang akurat, ARRaycast.trackingState
akan menjadi Tracking
.
Jika tidak, kolom ini akan diawali dengan Limited
.
dan beralih ke Tracking
setelah ARCore memiliki pose 3D yang akurat. Setelah status pelacakan menjadi Tracking
,
tidak akan dikembalikan ke
Limited
.