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 .
- Di Hierarki, pilih objek .
- Di Pemeriksa, klik tombol Tambahkan Komponen lalu pilih Penyiapan Yang Dapat Berinteraksi Mesh.
Komponen ditambahkan dan dengan properti Jenis Objek default diatur ke Dapat Berinteraksi. (Jenis objek akan dijelaskan di bagian berikutnya.)
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.
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.
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.
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.
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.
Pengaturan
Pengaturan umum untuk Manipulables, Equippables, dan Throwables
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
- 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
- Ruang Target:
- 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
- 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
- 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.
- 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.
Pengaturan eksklusif untuk Throwables
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.