Manajer batasan — MRTK2
Manajer batasan memungkinkan untuk menerapkan serangkaian komponen batasan ke transformasi. Komponen jenis TransformConstraint
yang melekat pada objek game dapat dipertimbangkan.
Per default, manajer batasan akan secara otomatis mengumpulkan semua komponen batasan yang melekat pada objek game dan menerapkannya ke transformasi yang diproses.
Namun, pengguna dapat memilih untuk mengonfigurasi daftar batasan yang diterapkan secara manual dan hanya memungkinkan subset batasan terlampir untuk diterapkan.
Saat ini elemen MRTK UX berikut mendukung pengelola batasan:
Properti dan bidang inspektur
Manajer batasan dapat dioperasikan dalam dua mode:
- Pilihan batasan otomatis
- Pilihan batasan manual
Pilihan batasan otomatis
Mode default manajer batasan, pemilihan batasan otomatis, akan menyediakan daftar semua komponen batasan terlampir serta tombol buka dan tombol tambahkan batasan.
Menambahkan batasan ke objek game
Tombol ini memungkinkan komponen batasan ditambahkan langsung dari pemeriksa manajer batasan. Semua jenis batasan dalam proyek harus terlihat di sini. Lihat batasan transformasi untuk informasi selengkapnya.
Masuk ke komponen
Semua batasan yang ditemukan pada objek akan dicantumkan di sini dengan tombol Buka komponen . Tombol ini akan menyebabkan pemeriksa menggulir ke komponen batasan yang dipilih sehingga dapat dikonfigurasi.
Pilihan batasan manual
Jika manajer batasan diatur ke mode manual, hanya batasan yang ditautkan dalam daftar batasan yang diproses dan diterapkan ke transformasi. Daftar yang ditampilkan hanya akan menampilkan batasan yang dipilih pengguna serta masuk ke tombol atau opsi untuk menghapus atau menambahkan entri. Saat mengaktifkan mode manual untuk pertama kalinya, manajer batasan akan mengisi daftar semua komponen yang tersedia sebagai titik awal untuk memilih komponen batasan terlampir.
Hapus entri
Ini menghapus entri dari daftar yang dipilih secara manual. Perhatikan bahwa opsi ini tidak akan menghapus komponen batasan dari objek permainan. Komponen batasan selalu perlu dihapus secara manual untuk memastikan tidak secara tidak sengaja merusak komponen lain yang mengacu pada komponen ini.
Tambahkan entri
Tambahkan entri akan membuka dropdown yang menunjukkan semua komponen batasan yang tersedia yang belum ada dalam daftar manual. Dengan mengklik salah satu entri yang akan ditambahkan komponen ke pilihan batasan manual.
Menambahkan batasan baru
Opsi ini akan menambahkan komponen dari jenis yang dipilih ke objek game dan menambahkan komponen batasan yang baru dibuat ke daftar batasan manual.
Mengubah batasan
Batasan dapat digunakan untuk membatasi manipulasi dalam beberapa cara. Misalnya, beberapa aplikasi mungkin memerlukan rotasi, tetapi juga mengharuskan objek tetap tegak. Dalam hal ini, RotationAxisConstraint
dapat ditambahkan ke objek dan digunakan untuk membatasi rotasi sumbu y. MRTK menyediakan sejumlah batasan, yang semuanya dijelaskan di bawah ini.
Anda juga dapat menentukan batasan baru dan menggunakannya untuk membuat perilaku manipulasi unik yang mungkin diperlukan untuk beberapa aplikasi. Untuk melakukan ini, buat skrip yang mewarisi dan TransformConstraint
mengimplementasikan properti abstrak ConstraintType
dan metode abstrak ApplyConstraint
. Setelah menambahkan batasan baru ke objek, itu harus membatasi manipulasi dengan cara yang ditentukan. Batasan baru ini juga harus ditampilkan di pemilihan otomatis manajer batasan atau menambahkan dropdown entri dalam mode manual.
Semua batasan yang disediakan oleh MRTK berbagi properti berikut:
Jenis Tangan
Menentukan apakah batasan digunakan untuk satu tangan, dua tangan atau kedua jenis manipulasi. Karena properti ini adalah bendera, kedua opsi dapat dipilih.
- Satu tangan: Batasan akan digunakan selama satu manipulasi tangan jika dipilih.
- Dua tangan: Batasan akan digunakan selama dua manipulasi tangan jika dipilih.
Tipe Kedekatan
Menentukan apakah batasan digunakan untuk manipulasi dekat, jauh, atau kedua jenis. Karena properti ini adalah bendera, kedua opsi dapat dipilih.
- Dekat: Batasan akan digunakan selama manipulasi dekat jika dipilih.
- Jauh: Batasan akan digunakan selama manipulasi jauh jika dipilih.
FaceUserConstraint
Ketika batasan ini dilampirkan ke objek, rotasi akan dibatasi sehingga objek akan selalu menghadap pengguna. Ini berguna untuk slate atau panel. Properti untuk FaceUserConstraint
adalah sebagai berikut:
Menghadap menjauh
Objek menghadap jauh dari pengguna jika benar.
FixedDistanceConstraint
Batasan ini memperbaiki jarak antara objek yang dimanipulasi dan transformasi objek lain pada awal manipulasi. Ini berguna untuk perilaku seperti memperbaiki jarak dari objek yang dimanipulasi ke transformasi kepala. Properti untuk FixedDistanceConstraint
adalah sebagai berikut:
Transformasi batasan
Ini adalah transformasi lain yang objek yang dimanipulasi akan memiliki jarak tetap. Default ke transformasi kamera.
FixedRotationToUserConstraint
Batasan ini memperbaiki rotasi relatif antara pengguna dan objek yang dimanipulasi saat sedang dimanipulasi. Ini berguna untuk slate atau panel karena memastikan bahwa objek yang dimanipulasi selalu menunjukkan wajah yang sama kepada pengguna seperti yang terjadi pada awal manipulasi.
FixedRotationToUserConstraint
tidak memiliki properti unik.
FixedRotationToWorldConstraint
Batasan ini memperbaiki rotasi global objek yang dimanipulasi saat sedang dimanipulasi. Ini dapat berguna dalam kasus di mana tidak ada rotasi yang harus ditanamkan oleh manipulasi.
FixedRotationToWorldConstraint
tidak memiliki properti unik:
MaintainApparentSizeConstraint
Ketika batasan ini dilampirkan ke objek, tidak peduli seberapa jauh objek berasal dari pengguna, itu akan mempertahankan ukuran yang jelas yang sama kepada pengguna (yaitu akan memakan proporsi yang sama dari bidang pandang pengguna). Ini dapat digunakan untuk memastikan bahwa panel slate atau teks tetap dapat dibaca saat memanipulasi.
MaintainApparentSizeConstraint
tidak memiliki properti unik:
MoveAxisConstraint
Batasan ini dapat digunakan untuk memperbaiki di mana sumbu objek yang dimanipulasi dapat dipindahkan. Ini dapat berguna untuk memanipulasi objek di atas permukaan bidang, atau di sepanjang garis. Properti untuk MoveAxisConstraint
adalah sebagai berikut:
Batasan pada gerakan
Menentukan sumbu mana yang akan mencegah pergerakan. Secara default, sumbu ini akan menjadi global daripada lokal, tetapi ini dapat diubah di bawah ini. Karena properti ini adalah bendera, sejumlah opsi dapat dipilih.
- Sumbu X: Pergerakan di sepanjang sumbu x dibatasi jika dipilih.
- Sumbu Y: Pergerakan di sepanjang sumbu y dibatasi jika dipilih.
- Sumbu Z: Pergerakan di sepanjang sumbu z dibatasi jika dipilih.
Gunakan ruang lokal untuk batasan
Akan membatasi relatif sumbu transformasi lokal objek yang dimanipulasi jika benar. Salah secara default.
RotationAxisConstraint
Batasan ini dapat digunakan untuk memperbaiki sumbu mana objek yang dimanipulasi dapat diputar. Ini dapat berguna untuk menjaga objek yang dimanipulasi dengan tegak, tetapi masih memungkinkan rotasi sumbu y, misalnya. Properti untuk RotationAxisConstraint
adalah sebagai berikut:
Batasan pada rotasi
Menentukan sumbu mana yang akan dicegah rotasinya. Secara default, sumbu ini akan menjadi global daripada lokal, tetapi ini dapat diubah di bawah ini. Karena properti ini adalah bendera, sejumlah opsi dapat dipilih.
- Sumbu Y: Rotasi tentang sumbu y dibatasi jika dipilih.
- Sumbu Z: Rotasi tentang sumbu z dibatasi jika dipilih.
- Sumbu X: Rotasi tentang sumbu x dibatasi jika dipilih.
Gunakan ruang lokal untuk batasan
Akan membatasi relatif sumbu transformasi lokal objek yang dimanipulasi jika benar. Salah secara default.
MinMaxScaleConstraint
Batasan ini memungkinkan nilai minimum dan maksimum diatur untuk skala objek yang dimanipulasi. Ini berguna untuk mencegah pengguna menskalakan objek terlalu kecil atau terlalu besar. Properti untuk MinMaxScaleConstraint
adalah sebagai berikut:
Menskalakan minimum
Nilai skala minimum selama manipulasi.
Skala maksimum
Nilai skala maksimum selama manipulasi.
Relatif terhadap status awal
Jika true, nilai di atas akan ditafsirkan relatif terhadap skala awal objek. Jika tidak, mereka akan ditafsirkan sebagai nilai skala absolut.