Manipulator objek — MRTK2
ObjectManipulator adalah komponen baru untuk perilaku manipulasi, yang sebelumnya ditemukan di ManipulationHandler. Manipulator objek membuat sejumlah peningkatan dan penyederhanaan. Komponen ini adalah pengganti untuk handler manipulasi, yang tidak akan digunakan lagi.
Skrip ObjectManipulator membuat objek dapat di-movable, dapat diskalakan, dan dapat di-rotatable menggunakan satu atau dua tangan. Manipulator objek dapat dikonfigurasi untuk mengontrol bagaimana objek akan merespons berbagai input. Skrip harus bekerja dengan sebagian besar bentuk interaksi, seperti tangan artikulasi HoloLens 2, sinar tangan HoloLens 2, tatapan dan gerakan HoloLens 1 dan input pengontrol gerakan headset imersif.
Cara menggunakan manipulator objek
Untuk menggunakan manipulator objek, pertama-tama ObjectManipulator
tambahkan komponen skrip ke GameObject. Pastikan juga untuk menambahkan collider ke objek, yang cocok dengan batas yang dapat diambil.
Untuk membuat objek merespons input tangan yang diartikulasikan dekat, tambahkan NearInteractionGrabbable
skrip juga.
Perilaku fisika dapat diaktifkan untuk manipulator objek dengan menambahkan komponen rigidbody ke objek. Perilaku fisika yang diaktifkan dengan menambahkan komponen ini dibahas secara lebih rinci dalam Fisika dan tabrakan.
Selain itu, manipulasi dapat dibatasi dengan menambahkan komponen batasan manipulasi ke objek. Ini adalah komponen khusus yang bekerja dengan manipulasi dan mengubah perilaku manipulasi dalam beberapa cara.
Properti dan bidang inspektur
Properti umum
Transformasi host
Transformasi objek yang akan dimanipulasi. Default ke objek komponen.
Jenis manipulasi
Menentukan apakah objek dapat dimanipulasi menggunakan satu atau dua tangan. Karena properti ini adalah bendera, kedua opsi dapat dipilih.
- Satu tangan: Memungkinkan manipulasi satu tangan jika dipilih.
- Dua tangan: Memungkinkan dua manipulasi tangan jika dipilih.
Izinkan manipulasi jauh
Menentukan apakah manipulasi dapat dilakukan menggunakan interaksi jauh dengan penunjuk.
Satu properti manipulasi yang diserahkan
Mode rotasi satu tangan di dekat
Menentukan bagaimana objek akan bertingkah ketika sedang diambil dengan satu tangan di dekatnya. Opsi ini hanya berfungsi untuk tangan artikulasi.
- Putar tentang pusat objek: Objek berputar menggunakan rotasi tangan, tetapi tentang titik pusat objek. Objek akan tampak bergerak lebih sedikit saat berputar, tetapi mungkin ada perasaan pemutusan antara tangan dan objek. Lebih berguna untuk interaksi jauh.
- Putar tentang titik penangkapan: Putar objek dengan tangan tentang titik tangkapan antara ibu jari dan jari telunjuk. Seharusnya terasa seolah-olah objek sedang dipegang oleh tangan.
Mode rotasi satu tangan jauh
Menentukan bagaimana objek akan bertingkah ketika sedang diambil dengan satu tangan pada jarak. Opsi ini hanya berfungsi untuk tangan artikulasi.
- Putar tentang pusat objek: Putar objek menggunakan rotasi tangan, tetapi tentang titik pusat objek. Berguna untuk memeriksa pada jarak tanpa pusat objek bergerak saat objek berputar.
- Putar tentang titik penangkapan: Putar objek menggunakan rotasi tangan, tetapi tentang titik temuan sinar penunjuk. Berguna untuk inspeksi.
Dua properti manipulasi yang diserahkan
Jenis manipulasi dua tangan
Menentukan bagaimana dua manipulasi tangan dapat mengubah objek. Karena properti ini adalah bendera, sejumlah opsi dapat dipilih.
- Pemindahan: Pemindahan diperbolehkan jika dipilih.
- Skala: Penskalan diperbolehkan jika dipilih.
- Putar: Rotasi diperbolehkan jika dipilih.
Batasan
Aktifkan batasan
Pengaturan ini akan mengaktifkan manajer batasan tertaut. Perubahan transformasi akan diproses oleh batasan yang terdaftar ke manajer batasan yang dipilih.
Manajer batasan
Dropdown memungkinkan untuk memilih salah satu manajer batasan terlampir. Manipulator objek memastikan ada manajer batasan yang terpasang setiap saat. Perhatikan bahwa beberapa komponen dengan jenis yang sama akan muncul dengan nama yang sama dalam unity. Untuk mempermudah membedakan antara beberapa manajer batasan pada objek yang sama, opsi yang tersedia akan menampilkan petunjuk tentang konfigurasi manajer batasan yang dipilih (pemilihan batasan manual atau otomatis).
Masuk ke komponen
Pilihan manajer batasan dilengkapi dengan tombol Buka komponen . Tombol ini akan menyebabkan pemeriksa menggulir ke komponen yang dipilih sehingga dapat dikonfigurasi.
Fisika
Pengaturan di bagian ini hanya muncul ketika objek memiliki komponen RigidBody.
Perilaku rilis
Tentukan properti fisik mana yang harus disimpan objek yang dimanipulasi setelah rilis. Karena properti ini adalah bendera, kedua opsi dapat dipilih.
- Keep Velocity: Ketika objek dirilis, jika opsi ini dipilih, opsi ini akan menjaga kecepatan liniernya.
- Keep Angular Velocity: Ketika objek dirilis, jika opsi ini dipilih, itu akan menjaga kecepatan sudutnya.
Gunakan kekuatan untuk manipulasi dekat
Apakah kekuatan fisika digunakan untuk memindahkan objek saat melakukan manipulasi dekat. Mengatur ini ke false akan membuat objek terasa lebih terhubung langsung ke tangan pengguna. Mengatur ini ke true akan menghormati massa dan inertia objek, tetapi mungkin merasa seolah-olah objek terhubung melalui musim semi. Defaultnya adalah false.
Menghaluskan
Menghaluskan jauh
Apakah smoothing independen kecepatan bingkai diaktifkan untuk interaksi jauh. Penghalusan jauh diaktifkan secara default.
Menghaluskan dekat
Apakah smoothing independen kecepatan bingkai diaktifkan untuk interaksi dekat. Penghalusan dekat dinonaktifkan secara default karena efeknya mungkin dianggap 'terputus' dari tangan.
Menghaluskan aktif
Usang dan akan dihapus dalam versi yang akan datang. Aplikasi harus menggunakan SmoothingFar, SmoothingNear atau kombinasi keduanya.
Pindahkan waktu lerp
Jumlah penghalusan untuk diterapkan pada gerakan. Penghalusan 0 berarti tidak ada penghalusan. Nilai maks berarti tidak ada perubahan pada nilai.
Putar waktu lerp
Jumlah penghalusan untuk diterapkan pada rotasi. Penghalusan 0 berarti tidak ada penghalusan. Nilai maks berarti tidak ada perubahan pada nilai.
Menskalakan waktu lerp
Jumlah penghalusan untuk diterapkan pada skala. Penghalusan 0 berarti tidak ada penghalusan. Nilai maks berarti tidak ada perubahan pada nilai.
Peristiwa manipulasi
Handler manipulasi menyediakan peristiwa berikut:
- OnManipulationStarted: Diaktifkan saat manipulasi dimulai.
- OnManipulationEnded: Menembak ketika manipulasi berakhir.
- OnHoverStarted: Menembak ketika tangan / pengontrol mengarahkan yang dapat dimanipulasi, dekat atau jauh.
- OnHoverEnded: Menembak ketika tangan / pengontrol melayang-melayang yang dapat dimanipulasi, dekat atau jauh.
Urutan kebakaran peristiwa untuk manipulasi adalah:
OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded
Jika tidak ada manipulasi, Anda masih akan mendapatkan peristiwa hover dengan urutan kebakaran berikut:
OnHoverStarted ->OnhoverEnded
Fisika dan tabrakan
Perilaku fisika dapat diaktifkan dengan menambahkan komponen rigidbody ke objek yang sama dengan manipulator objek. Ini tidak hanya memungkinkan konfigurasi perilaku rilis di atas, ini juga memungkinkan tabrakan. Tanpa komponen yang kaku, tabrakan tidak berpura-pura dengan benar selama manipulasi:
- Tabrakan antara objek yang dimanipulasi dan tabrakan statis (yaitu objek dengan tabrakan tetapi tidak ada rigidbody) tidak berfungsi, objek yang dimanipulasi melewati lurus melalui collider statis yang tidak terpengaruh.
- Tabrakan antara objek yang dimanipulasi dan rigidbody (yaitu objek dengan tabrakan dan rigidbody) menyebabkan rigidbody memiliki respons tabrakan, tetapi responsnya gelisah dan tidak wajar. Juga tidak ada respons tabrakan pada objek yang dimanipulasi.
Ketika rigidbody ditambahkan, tabrakan harus bekerja dengan benar.
Tanpa rigidbody
Dengan rigidbody
Elastis (Eksperimental)
Elastis dapat digunakan saat memanipulasi objek melalui manipulator objek. Perhatikan bahwa sistem elastis masih dalam keadaan eksperimental. Untuk mengaktifkan elastis, tautkan komponen manajer elastis yang ada atau buat dan tautkan manajer elastis baru melalui tombol Add Elastics Manager
.