Bagikan melalui


Ambil, tahan dan lempar dengan Interactables

Gambaran Umum

Mesh Interactables adalah sistem untuk mengonfigurasi objek dengan skrip Unity yang menentukan interaksi dengan objek atau perilaku avatar saat runtime. Skrip menentukan properti objek yang dapat berinteraksi dengan menggunakan interaksi XRI. Toolkit Mesh berisi skrip dari berbagai jenis objek yang dapat ditentukan. Ketika proyek berjalan, ia mengatur semua prefab dan pengaturan yang diperlukan agar objek atau avatar berperilaku seperti yang didefinisikan. Jika Anda ingin melihat perkiraan pratinjau tampilan dan nuansa objek yang dapat berinteraksi saat dijalankan di aplikasi Mesh, pastikan untuk menyiapkan Mode Emulasi Jala. Perhatikan bahwa fungsionalitas IK yang terlihat di aplikasi Mesh tidak tersedia dalam Mode Emulasi Mesh.

Komponen Penyiapan Yang Dapat Berinteraksi Mesh

Untuk membuat objek dapat berinteraksi, Anda harus menambahkan komponen Penyiapan Yang Dapat Berinteraksi Mesh .

  1. Di Hierarki, pilih objek .
  2. Di Pemeriksa, klik tombol Tambahkan Komponen lalu pilih Penyiapan Yang Dapat Berinteraksi Mesh.

Cuplikan layar dialog Tambahkan Komponen dengan komponen Penyiapan Yang Dapat Berinteraksi Mesh pilih.

Komponen ditambahkan dan dengan properti Jenis Objek default diatur ke Dapat Berinteraksi. (Jenis objek akan dijelaskan di bagian berikutnya.)

Cuplikan layar komponen Penyiapan Yang Dapat Berinteraksi Mesh dengan Jenis Objek diatur ke Dapat Berinteraksi.

Properti untuk sekelompok objek yang semuanya berperilaku sama dapat disiapkan dengan komponen Penyiapan Yang Dapat Berinteraksi Mesh induk. Properti akan diterapkan ke semua anak dengan rigidbodies saat runtime dengan secara otomatis menambahkan komponen Mesh Interactable Body ke setiap objek anak. Anda mungkin ingin menambahkan Mesh Interactable Body secara manual untuk menggunakan Mesh yang dapat berinteraksi dengan Visual Scripting, seperti dengan peristiwa interaksi atau untuk memodifikasi transformasi target yang dapat dimanipulasi melalui skrip visual.

Cuplikan layar komponen Mesh Interactable Body.

Catatan:

  • Mesh Interactable Body akan memungkinkan setiap interaktif untuk beraksi secara independen.

  • Sebuah rigidbody harus ditambahkan ke objek jika Anda ingin itu menjadi fisika diaktifkan.

Jenis Objek yang Dapat Berinteraksi

Ada empat jenis objek:

  • Dapat berinteraksi
  • Dapat dimanipulasi
  • Dapat diisi
  • Throwable

Untuk memilih tipe objek:

  • Di komponen Penyiapan Yang Dapat Berinteraksi Mesh , klik menu drop-down Jenis Objek lalu pilih salah satu dari empat opsi.

Cuplikan layar opsi menu Jenis Objek di komponen Isi Yang Dapat Berinteraksi Mesh.

Dapat berinteraksi

Seperti disebutkan di atas, ini adalah jenis default dan yang paling mendasar. Ini memberi Anda akses ke panggilan balik yang dapat dipanggil saat pengguna mengarahkan mouse ke atas atau memilih objek yang dapat Anda bereaksi terhadap skrip lain. Misalnya, jika Anda memiliki tombol yang ingin Anda gunakan untuk mengaktifkan objek lain, tambahkan jenis ini ke objek dengan panggilan balik OnSelected untuk mengaktifkan objek lain tersebut. Tombol akan sepenuhnya dapat berinteraksi hanya dengan menambahkan jenis ini dan collider; Anda tidak perlu melakukan hal lain.

Dapat dimanipulasi

Objek jenis ini dapat memanipulasi transformasinya saat runtime dan akan bergerak melalui ruang di akhir sinar interaktor. Kontrol pintasan tersedia untuk memutar atau menerjemahkan objek. Untuk manipulasi objek di aplikasi Mesh, Anda dapat mengaktifkan pengaturan IK untuk tangan avatar untuk mengikuti objek. Objek yang dapat dimanipulasi tidak memerlukan rigidbody, tetapi Anda harus menambahkannya jika Anda ingin objek memiliki kemampuan fisika.

Cuplikan layar pengalaman Mesh dengan pot kopi yang dimanipulasi.

Dapat diisi

Objek jenis ini akan melekat pada tangan avatar Anda. Kontrol PC untuk melengkapi sedang mengklik objek atau menekan 'F' saat objek dipilih. Kontrol Quest untuk equip menekan tombol 'Grip' saat objek dipilih. Objek yang dapat dilengkapi berisi pengaturan untuk target IK untuk pose lengan avatar Anda saat objek dilengkapi. Target IK adalah offset dari dada avatar; ini menentukan ke mana tangan pergi saat objek dipegang atau diaktifkan.

Throwable

Seperti namanya, Anda dapat mengambil dan melempar objek jenis ini. Setelah meraih, Anda dapat masuk ke mode tujuan dengan menekan dan menahan tombol mouse kiri. Ini akan memungkinkan lengan avatar Anda untuk mengikuti target mouse Anda; untuk melempar objek, lepaskan tombol mouse kiri.

Cuplikan layar permainan dart dengan anak panah yang disambar dan dibaca untuk dilemparkan.

Semua komponen Interactables memiliki properti interaksi dan metode yang tersedia untuk Visual Scripting sehingga Anda memiliki sejumlah cara yang tidak terbatas untuk membuatnya bekerja sama.

Membuat objek dapat berinteraksi dengan Visual Scripting

Jika Anda ingin mengatur reaksi terhadap interaksi objek dengan Visual Scripting, Anda dapat menggunakan komponen Isi Yang Dapat Berinteraksi Mesh di dalam grafik skrip dengan simpul ke properti yang tersedia, seperti OnHovered atau OnSelected, yang terhubung ke simpul OnStateChanged . Misalnya, grafik skrip berikut akan mengaktifkan silinder saat tombol ditekan dan menonaktifkannya saat tombol dirilis. Tombol ini sepenuhnya dapat berinteraksi hanya dengan menambahkan skrip dan collider; Anda tidak perlu melakukan hal lain.

Cuplikan layar grafik skrip dengan isi Mesh Interactable Dipilih simpul.

Pengaturan

Pengaturan umum untuk Manipulables, Equippables, dan Throwables

Cuplikan layar komponen Penyiapan Yang Dapat Berinteraksi Mesh dengan properti umum untuk semua jenis objek disorot.

Radius Kedekatan Interaksi Jarak terjauh avatar dapat berinteraksi dengan objek ini

Pengaturan IK Mengambang – Pengaturan IK yang akan digunakan saat mengarahkan kuartal ke objek

  • Bentuk Pose Tangan: Bentuk pose tangan untuk memasukkan tangan avatar ke dalam saat mengarahkan mouse ke atas objek
  • Ukuran Pose Tangan: Ukuran pose tangan dari 0 – 1.
  • Aktifkan Pelacakan IK: Apakah lengan avatar akan menjangkau objek saat melayang menggunakan penargetan IK atau tidak.
    • Membatasi IK Spherical: Jika true, arm IK akan dilakukan pada bola. Ini akan menyebabkan lengan avatar tidak menempel lurus keluar.

Sorot Pengaturan

  • Diarahkan/Dipilih: Apakah objek disorot atau tidak disorot atau dipilih.

  • Sorot Mekanisme

    • Item menu 1: Properti Shader

      • Warna Sorotan: Warna untuk mengatur properti warna bahan saat objek disorot.
      • Sorot Durasi Transisi: Jumlah waktu untuk memudarkan sorotan masuk/keluar saat transisi.
      • Sorot Properti Jumlah: Properti bahan untuk mengatur jumlah sorotan saat disorot. Ini adalah nilai float.
      • Sorot Properti Warna: Properti bahan untuk mengatur warna sorotan saat disorot. Ini adalah nilai warna.
    • Item menu 2: Kerangka Jala: Menambahkan kerangka otomatis dari warna/lebar yang ditentukan ke objek.

      • Warna Sorotan: Warna kerangka.
      • Sorot Durasi Transisi: Jumlah waktu untuk memudarkan kerangka masuk/keluar saat transisi.
      • Sorot Lebar Kerangka: Seberapa tebal (dalam meter) seharusnya kerangka. Mengambil alih "Nilai Ekstrusi" dalam Alat Grafis/bahan Standar.
      • Bahan Kerangka Kustom: Bahan yang digunakan untuk merender kerangka.
      • Bahan Tulis Stensil Kustom: Bahan yang digunakan menulis nilai ke buffer stensil
      • Mode Pengecualian Kerangka: Opsi untuk memfilter perender yang tidak ingin Anda sertakan dalam kerangka.
    • Item menu 3: Inner Glow: Menerapkan sorotan dengan efek cahaya menggunakan properti yang diberikan.

      • Warna Sorotan: Warna cahaya dalam.
      • Sorot Durasi Transisi: Jumlah waktu untuk memudarkan cahaya dalam masuk/keluar saat transisi
      • Materi sorotan kustom: Ganti opsi khusus untuk objek ini untuk mengatur bahan yang digunakan untuk cahaya. Jika ini tidak diatur, materi default dari aset pengaturan akan digunakan.
      • String pengecualian: Jika ini diatur maka Objek Game apa pun dengan nama yang berisi string pengecualian akan dikecualikan dari sorotan.

Pengaturan eksklusif untuk Manipulables

Cuplikan layar komponen Penyiapan Yang Dapat Berinteraksi Mesh dengan pengaturan Yang Dapat Dimanipulasi ditampilkan.

  • Mode Paksa: Mode yang digunakan untuk memaksa objek melalui spasi
    • Default: Perilaku MRTK default yang memindahkan objek menggunakan pusatnya.
    • Titik Musim Semi: Perilaku alternatif yang memindahkan objek dengan menerapkan gaya pada titik ambil (hanya berfungsi untuk rigidbodies)
  • Rotasi (Hanya tersedia untuk mode Default)
    • Diaktifkan: Apakah objek dapat diputar atau tidak saat memanipulasi. Setiap sumbu dapat diatur satu per satu.
    • Logika Rotasi Manipulasi
      • Default: Saat memanipulasi objek, objek akan berputar di sekitar kamera dan tetap pada orientasi yang sama relatif terhadap kamera (nilai transformasi aktual akan berputar).
      • Ketat: Saat memanipulasi objek, objek tidak akan memutar transformasinya dan tidak akan tetap pada orientasi yang sama relatif terhadap kamera.
  • Terjemahan (Hanya tersedia untuk mode Default) =Diaktifkan: Apakah objek dapat diterjemahkan saat memanipulasi atau tidak. Setiap sumbu dapat diatur satu per satu.
  • Point Spring (Hanya tersedia untuk mode Point Spring)
    • Kekuatan musim semi: Kekuatan pegas yang menarik objek . Semakin tinggi nilainya, semakin cepat akan mencapai titik target.
    • Faktor Damping: Berapa banyak peredam yang diterapkan untuk mencegah osilasi di sekitar titik penangkapan.
  • Ubah Transformasi Target: Memberi pengguna opsi untuk mengambil alih transformasi default dan mengatur posisi dan rotasi objek yang diinginkan relatif terhadap kamera/avatar saat objek dipilih. Saat ini diatur ke Diaktifkan, Anda mendapatkan tiga properti berikut:
    • Ruang Target:
      • Ruang lokal kamera: Apakah akan menentukan posisi dan rotasi di ruang lokal kamera.
      • Ruang lokal avatar: Apakah akan menentukan posisi dan rotasi di ruang lokal avatar.
    • Posisi Target Baru: Posisi target baru (komponen z adalah arah di mana kamera/avatar menghadap)
    • Rotasi Target Baru: Rotasi target baru
  • Avatar IK
    • Bentuk Pose Tangan: Bentuk pose tangan untuk memasukkan tangan avatar ke dalam saat memanipulasi objek
    • Ukuran Pose Tangan: Ukuran pose tangan dari 0 – 1.
    • Aktifkan Pelacakan IK: Apakah lengan avatar akan mencapai objek saat memanipulasi menggunakan penargetan IK atau tidak.
      • Membatasi IK Spherical: Jika benar, arm IK akan dilakukan pada bola. Ini akan menyebabkan lengan avatar tidak menempel lurus keluar.

Pengaturan yang dibagikan oleh Equippables dan Throwables

Cuplikan layar komponen Penyiapan Yang Dapat Berinteraksi Mesh dengan pengaturan umum untuk Equippables dan Throwables disorot.

  • Offset Interaksi: Posisi dan offset rotasi relatif terhadap tangan avatar untuk menempatkan objek.
  • Melengkapi Pose Target
    • Posisi: Jarak dari dada avatar untuk menempatkan tangan saat item dilengkapi.
    • Rotasi: Jumlah untuk memutar pergelangan tangan saat item dilengkapi.
  • Pose Tangan Dipegang:
    • Bentuk Pose Tangan: Ini adalah drop-down yang menyediakan berbagai bentuk pose tangan untuk memasukkan tangan avatar ke dalam ketika dilengkapi. Anda juga dapat memilih tidak ada.
    • Ukuran Pose Tangan: Ukuran pose tangan dari 0 – 1.

Pengaturan eksklusif untuk Equippables

Cuplikan layar komponen Penyiapan Dapat Berinteraksi Mesh dengan pengaturan Yang Dapat Diisi ditampilkan.

  • Aktifkan Konfigurasi
    • Jenis Aktivasi: Kapan mengatur item sebagai aktif. Objek yang dapat dilemparkan tidak dapat diaktifkan dan akan selalu memiliki tipe aktif yang diatur ke tidak ada.
      • Tidak ada: Item ini tidak dapat diaktifkan.
      • Beralih: Item ini beralih antara aktif/tidak aktif setiap kali kontrol aktifkan diklik.
      • Satu: Item ini diaktifkan ketika kontrol aktifkan diklik lalu dinonaktifkan secara otomatis setelah mencapai pose target terakhir.
    • Aktifkan Pose Target: Daftar pose target yang digunakan untuk menempatkan tangan avatar saat item diaktifkan. Setiap pose terdiri dari empat properti: Posisi, Rotasi, Waktu interpolasi, dan Kurva Animasi. Posisi dan offset rotasi relatif terhadap dada avatar. Avatar akan menginterpolasi menggunakan kurva animasi dari pose sebelumnya ke yang saat ini secara berurutan menurunkan daftar untuk jumlah waktu yang ditentukan dalam waktu interpolasi, tetap pada pose akhir sampai dinonaktifkan. Ketika dinonaktifkan, pose tangan avatar akan bergerak mundur melalui daftar.

Pengaturan eksklusif untuk Throwables

Cuplikan layar komponen Penyiapan Dapat Berinteraksi Mesh dengan pengaturan Yang Dapat Dilemparkan ditampilkan.

Konfigurasi Tujuan:

  • Arm Extension on Aim – Jumlah untuk memperpanjang lengan saat dalam mode tujuan.
  • Arahkan Pose Tangan:
    • Bentuk Pose Tangan: Bentuk pose tangan untuk memasukkan tangan avatar ke dalam ketika memicu.
    • Ukuran Pose Tangan: Ukuran pose tangan dari 0 – 1.
  • Arahkan Rotasi Tangan: Rotasi tangan saat memidik
  • Lempar Pose Tangan:
    • Bentuk Pose Tangan: Bentuk pose tangan untuk memasukkan tangan avatar ke dalam ketika lemparan dilepaskan
    • Ukuran Pose Tangan: Ukuran pose tangan dari 0 – 1.
  • Kecepatan Lempar VR Min: Kecepatan minimum untuk diterapkan pada objek saat dilemparkan pada Quest.
  • Kecepatan Lempar Maksimum VR: Kecepatan maksimum untuk diterapkan ke objek saat dilemparkan pada Quest. Ini adalah nilai kecepatan yang digunakan pada PC. Pada Quest kecepatan akan diskalakan berdasarkan gerakan lengan fisik pengguna.

Pada Quest, kecepatan yang diterapkan ketika objek dilemparkan akan diskalakan antara nilai minimum dan maksimum menggunakan kecepatan nyata pergerakan lengan pengguna.

  • Pengaturan 2D
    • 2D Throw Velocity: Kecepatan untuk diterapkan pada objek saat dilemparkan di PC.
    • Offset Arah Lempar: Offset arah untuk diterapkan ke objek saat dilemparkan ke PC.
  • Lempar Pose Target: Daftar pose target yang digunakan untuk menempatkan tangan avatar saat item dilemparkan. Posisi dan offset rotasi relatif terhadap posisi tangan avatar ketika lemparan dimulai. Avatar akan menginterpolasi menggunakan kurva animasi dari pose sebelumnya ke yang saat ini secara berurutan menurunkan daftar untuk jumlah waktu yang ditentukan dalam waktu interpolasi. Objek akan dilepaskan dan pose tangan lemparan akan digunakan pada target kedua hingga terakhir.

Pembuatan Skrip Visual

Untuk semua isi yang dapat berinteraksi:

  • Properti
    • IsHovered (baca saja) – Apakah avatar lokal Anda mengarahkan objek atau tidak.
    • IsSelected (baca saja) – Apakah ada avatar yang memilih objek atau tidak. Saat berjalan di MeshBrowser, ini akan dijaring.
    • IsSelectedLocally – Apakah avatar lokal memilih objek atau tidak.
    • IsMine (baca saja) – Benar untuk avatar terakhir untuk memilih atau melengkapi objek.

Untuk Equippables:

  • Properti
    • EquippedAt (baca saja) - Di mana objek ini dilengkapi – None, DefaultHand, RightHand, LeftHand. Saat berjalan di MeshBrowser, ini akan dijaring.
    • EquipTime (baca saja) – Jam berapa objek ini dilengkapi. Saat berjalan di MeshBrowser, ini akan dijaring.
    • Diaktifkan (baca saja) – Jika objek ini dalam status diaktifkan. Hanya valid untuk objek yang tidak dapat dilemparkan. Saat berjalan di MeshBrowser, ini akan dijaring.
    • IsAiming (baca saja) – Jika avatar lokal dalam status tujuan saat menahan objek ini. Hanya berlaku untuk lemparan.
    • IsThrowing (baca saja) – Jika avatar lokal secara aktif melempar objek. Hanya berlaku untuk lemparan.
    • IsEquipped (baca saja) (baca saja) – Jika objek ini saat ini dilengkapi oleh avatar. Saat berjalan di MeshBrowser, ini akan dijaring.
    • IsThrowable – jika objek ini dapat dilemparkan.
    • ThrowVelocity – Kecepatan untuk melempar objek saat dirilis.

Agar dapat dimanipulasi untuk memodifikasi Posisi Target:

  • Posisi Target (baca saja): Posisi target isi saat menggunakan Mode Paksa Default di Properti Yang Dapat Berinteraksi Mesh
  • Rotasi Target (baca saja): Rotasi target isi saat menggunakan Mode Paksa Default di Properti Interaktif Mesh
  • Ray Hit Posisi (baca saja): Posisi hit ray-cast dari interaksi pada tubuh
  • Rotasi Hit Sinar (baca saja): Rotasi interaksi di sekitar arah sinar
  • Posisi Target yang Dimodifikasi (baca dan tulis): Digunakan untuk mengatur posisi target baru oleh skrip visual. Ini akan menggantikan posisi target default. Praktik terbaik adalah mengambil alih properti ini:
    • Menggunakan Status Berubah dari Posisi Target. Dalam hal ini, skrip visual akan mengaktifkan alur hanya ketika interaksi dan posisi baru telah berubah.
    • Menggunakan Saat Pembaruan Terlambat. Jika Anda perlu mengubah transformasi target di setiap bingkai, lakukan di pembaruan terlambat sehingga transformasi target baru tersedia segera di bingkai berikutnya.
  • Rotasi Target yang Dimodifikasi (baca dan tulis): Digunakan untuk mengatur rotasi target baru oleh skrip visual. Ini akan menggantikan posisi target default.

Pengaturan

Ubah dengan Skrip Visual: Aktifkan ini untuk mengubah transformasi target untuk isi yang dapat dimanipulasi menggunakan skrip visual. Modifikasi dengan skrip visual

Langkah berikutnya