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

Pilihan 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

Pilihan 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

Batasan Pengguna Wajah

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 Jarak tetap

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

Rotasi Tetap

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

Rotasi tetap ke dunia

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

Pertahankan ukuran Yang Jelas

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 Pindahkan Sumbu

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

Sumbu Rotasi Batasan

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

Min Max Constatint

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.