Google berkomitmen untuk memajukan kesetaraan ras bagi komunitas Kulit Hitam. Lihat bagaimana.

Jelajahi kode aplikasi sampel HelloAR

Pelajari kode aplikasi sampel ARCore SDK for Unity untuk mempelajari cara kerja komponen SDK dalam adegan AR.

Prasyarat

Panduan ini mengasumsikan bahwa Anda telah mengunduh dan menginstal ARCore SDK for Unity. Jika Anda baru ke SDK, lihat Arcore SDK untuk Unity Quickstart Guide pertama.

Jelajahi aplikasi sampel

Lihatlah komponen SDK dalam sampel adegan HelloAR.

  1. Pada jendela Unity Proyek, menavigasi ke Aset> GoogleARCore> Contoh> HelloAR> Scenes> HelloAR.

  2. Klik dua kali adegan HelloAR untuk membukanya.

  3. Gunakan jendela Hierarchy untuk memulai navigasi adegan sampel. Anda akan menemukan objek game ARCore berikut:

    Objek permainan Keterangan
    Perangkat ARCore Prefab yang mengelola sesi Arcore.

    Memegang First Person Camera permainan objek, yang menggunakan kamera di bagian belakang perangkat Anda untuk menangkap gambar dunia nyata dan membuat mereka tersedia sebagai latar belakang adegan AR.
    Cahaya Lingkungan Cetakan yang menyesuaikan pencahayaan dalam adegan AR menggunakan perkiraan kecerahan pixel rata-rata di gambar yang menangkap kamera Anda. Untuk melakukan ini, di setiap bingkai:
    Titik Awan Cetakan untuk fitur poin terdeteksi di frame.
    Pengontrol HaloAR Objek game yang skrip pengontrolnya mengelola adegan AR.
    Skrip pengontrol memiliki referensi ke Kamera Orang Pertama dan beberapa cetakan.
    PesawatPenemuan Prefab yang menyediakan visual penemuan pesawat yang memandu pengguna untuk memindai lingkungan dan menemukan pesawat. Ini terdiri dari animasi tangan yang memegang perangkat dan snackbar dengan instruksi singkat yang menunjukkan cara memindahkannya sehingga titik fitur terdeteksi. Poin fitur ini memiliki efek popup untuk memberikan umpan balik saat terdeteksi. Jika tidak ada pesawat yang ditemukan setelah jangka waktu tertentu, snackbar menampilkan tombol yang menawarkan untuk membuka jendela bantuan dengan instruksi yang lebih mendetail tentang cara meningkatkan pengalaman AR saat ditekan.

Jelajahi kodenya

Sekarang setelah Anda memiliki gagasan tentang objek game ARCore utama dalam adegan sampel, ikuti kode yang membuatnya bekerja bersama.

The HelloARController Script alat aspek penting dari pengalaman Arcore sampel aplikasi.

Akses kodenya

  1. Dalam adegan HelloAR, klik HelloAR Pengendali objek permainan.

  2. Pada jendela Inspektur, klik dua kali HelloARController script untuk membukanya di editor.

Langkah melalui kode

Lihatlah kodenya. Dalam HelloARController naskah, yang Update() metode menangani tugas-tugas penting di setiap frame:

Periksa pelacakan gerak

  • Pelacakan gerak menyediakan deteksi pesawat. The Update() metode panggilan _UpdateApplicationLifecycle() metode untuk memeriksa pelacakan gerak. Kode berikut ini di _UpdateApplicationLifecycle() :
  // Check that motion tracking is tracking.
  if (Session.Status != SessionStatus.Tracking)
  {
      Screen.sleepTimeout = SleepTimeout.SystemSetting;
  }
  else
  {
      Screen.sleepTimeout = SleepTimeout.NeverSleep;
  }

Deteksi pesawat baru dan yang sudah ada di dunia nyata

  • Arcore mencari baru pesawat untuk melacak di kancah dunia nyata.

  • The PlaneDiscovery prefab akan menampilkan panduan visual selama pesawat baru dan yang sudah ada belum terdeteksi. Setelah setidaknya satu pesawat dilacak, UI panduan disembunyikan.

Proses input pengguna untuk menempatkan objek virtual

Setelah pesawat dilacak, yang Update() metode input menangani pengguna untuk menempatkan Arcore gadai benda di pesawat terdeteksi.

  • Ketika pengguna mengetuk layar, Frame.Raycast() menggunakan raycast dari posisi keran untuk mendeteksi apakah pengguna mengetuk pesawat atau poin berorientasi .

  • Jika pengguna mengetuk pesawat atau permukaan poin berorientasi, maka obyek gadai Arcore instantiated di TrackableHit berpose di mana pengguna disadap.

  • Pose hit digunakan untuk membuat jangkar .

    • The anchor membuat objek AR permainan di posisi yang sama relatif terhadap dunia nyata.
    • Bila Anda tidak perlu lagi jangkar, panggilan Unity GameObject Destroy() metode di atasnya. Ini memberi sinyal kepada ARCore untuk berhenti melacak jangkar.
  • Posisi kamera digunakan untuk mengatur Arcore bidak mengubah , sehingga gadai adalah dalam orientasi yang konsisten relatif caemra yang

  • Transformasi pion mewarisi jangkar pukulan sehingga objek permainan pion tetap berada di tempat pengguna meletakkannya saat pengguna menggerakkan ponselnya.

// Raycast against the location the player touched to search for planes.
TrackableHit hit;
TrackableHitFlags raycastFilter = TrackableHitFlags.PlaneWithinPolygon |
    TrackableHitFlags.FeaturePointWithSurfaceNormal;

if (Frame.Raycast(touch.position.x, touch.position.y, raycastFilter, out hit))
{
    // Use hit pose and camera pose to check if hittest is from the
    // back of the plane, if it is, no need to create the anchor.
    if ((hit.Trackable is DetectedPlane) &&
        Vector3.Dot(FirstPersonCamera.transform.position - hit.Pose.position,
            hit.Pose.rotation * Vector3.up) < 0)
    {
        Debug.Log("Hit at back of the current DetectedPlane");
    }
    else
    {
        // Instantiate prefab at the hit pose.
        var gameObject = Instantiate(prefab, hit.Pose.position, hit.Pose.rotation);

        // Compensate for the hitPose rotation facing away from the raycast (i.e.
        // camera).
        gameObject.transform.Rotate(0, _prefabRotation, 0, Space.Self);

        // Create an anchor to allow ARCore to track the hitpoint as understanding of
        // the physical world evolves.
        var anchor = hit.Trackable.CreateAnchor(hit.Pose);

        // Make game object a child of the anchor.
        gameObject.transform.parent = anchor.transform;
    }
}