Aracılığıyla paylaş


Kısıtlamalar — MRTK3

ConstraintManager bir dönüşüme kısıtlama bileşenleri kümesi uygulamanıza olanak tanır. Varsayılan olarak, kısıtlama yöneticisi tüm ekli kısıtlama bileşenlerini otomatik olarak toplar ve bunları hedef nesneye uygular. Ancak, kullanıcılar uygulanan kısıtlamaların listesini el ile yapılandırmayı ve yalnızca ekli kısıtlamaların bir alt kümesinin kullanılmasına izin verebilir.

Not

MRTK3 şu anda MRTK 2.x'ten gelen kısıtlamaların sınırlı bir alt kümesini sunmaktadır. Şu anda Çözücüler ve Elastikler ile geliştirici iş akışını birleştirmek için Kısıtlamalar sisteminin yeniden düzenlenmesini araştırıyoruz. Bizi izlemeye devam edin!

Şu anda, aşağıdaki MRTK UX öğeleri kısıtlamaları destekler:

Kısıtlama yöneticisi iki modda çalışabilir:

  • Otomatik kısıtlama seçimi
  • El ile kısıtlama seçimi

Kısıtlama seçimi

Otomatik kısıtlama seçimi

Otomatik Seçim modu

Varsayılan Otomatik mod, eklenen tüm kısıtlama bileşenlerini listeler. Bileşene git düğmelerini kullanarak doğrudan denetçideki bileşene atlayabilir veya açılan listeden yeni bir kısıtlama ekleyebilirsiniz.

El ile kısıtlama seçimi

El ile Seçim modu

Kısıtlama yöneticisi el ile moda ayarlanırsa, yalnızca kısıtlama listesindeki bağlı kısıtlamalar işlenir ve dönüşüme uygulanır. El ile modu ilk kez etkinleştirirken, yönetici listeyi şu anda eklenmiş olan tüm kısıtlamalarla otomatik olarak doldurur.

Not

Girdiyi Kaldır eylemi, kısıtlamayı yalnızca el ile seçim listesinden kaldırır. Bileşen GameObject'te bulunmaya devam eder.

Yürütme sırası

Her kısıtlamanın yürütme sırası, kısıtlamanın kendisindeki Yürütme Sırası seçeneğinde tanımlanabilir. Sıra, kısıtlama yöneticisinde görüntülenen listeye yansıtılır. Bazı kısıtlamalar farklı siparişlerde birleştirildiğinde farklı davranır, bu nedenle her kısıtlamanın önceliklerini göz önünde bulundurun ve sıralarını buna göre ayarlayın.

Dönüştürme kısıtlamaları

Düzenlemeyi bir şekilde sınırlamak için kısıtlamaları kullanabilirsiniz. Örneğin, bazı uygulamalar döndürme gerektirebilir ve nesne dik kalır. Bu durumda, nesnesine bir RotationAxisConstraint eklenebilir ve döndürmeyi y ekseni döndürmeyle sınırlamak için kullanılabilir. MRTK, tümü aşağıda açıklanan çeşitli kısıtlamalar sağlar.

Ayrıca yeni kısıtlamalar tanımlamak ve bunları kullanarak bazı uygulamalar için gerekli olabilecek benzersiz işleme davranışı oluşturmak mümkündür. Bunu yapmak için, 'den TransformConstraint devralan bir betik oluşturun ve soyut özelliği ile abstract ConstraintTypeApplyConstraint yöntemini uygulayın. Yeni kısıtlamanız açılan listede görünmelidir ve nesneye eklendiğinde kısıtlama yöneticisine otomatik olarak kaydedilmelidir.

MRTK tarafından sağlanan tüm kısıtlamalar aşağıdaki özellikleri paylaşır:

El Türü , kısıtlamanın tek elle mi, iki elle mi yoksa her iki tür işleme için mi kullanıldığını belirtir. Bu özellik bir bayrak olduğundan her iki seçenek de seçilebilir.

  • Tek elle kullanım: Kısıtlama, seçilirse tek elle işleme sırasında kullanılır.
  • İki elle kullanım: Kısıtlama, seçilirse iki elle işleme sırasında kullanılır.

ProximityType , kısıtlamanın yakın, uzak veya her iki tür işleme için mi kullanıldığını belirtir. Bu özellik bir bayrak olduğundan her iki seçenek de seçilebilir.

  • Yakın: Kısıtlama, seçilirse yakın düzenleme sırasında kullanılır.
  • Uzak: Kısıtlama, seçilirse uzak yönlendirme sırasında kullanılır.

FaceUserConstraint

Bu kısıtlama, bir nesnenin döndürmesini her zaman kullanıcıyla karşılaşacak şekilde sınırlar. Dışarıda Yüz Tanıma seçeneği, pozitif veya negatif Z ekseninin kullanılıp kullanılmayacağını denetler.

FaceUserConstraint Gösterimi

FixedDistanceConstraint

Bu kısıtlama, işleme başlangıcında manipüle edilen nesne ile başka bir nesne dönüştürmesi arasındaki uzaklığı düzeltir. Bu, manipüle edilen nesneden baş dönüşümüne olan uzaklığı düzeltme gibi davranışlar için yararlıdır. Kısıtlama dönüştürme alanı varsayılan olarak kamera dönüşümünü kullanır ve manipüle edilen nesnenin sabit uzaklığı olacak diğer dönüşümdür.

FixedDistanceConstraint Gösterimi

MaintainApparentSizeConstraint

Bu kısıtlama bir nesneye eklendiğinde, nesne kullanıcıdan ne kadar uzakta olursa olsun, kullanıcı için aynı görünür boyutu korur (kullanıcının görünüm alanının aynı oranını alır). Bu, düzenleme sırasında bir kayrak veya metin panelinin okunabilir kalmasını sağlamak için kullanılabilir.

MaintainApparentSizeConstraint Gösterimi

MoveAxisConstraint

Bu kısıtlama, yönlendirilen bir nesnenin hangi eksenler boyunca taşınabileceğini düzeltmek için kullanılabilir. Bu, bir düzlemin yüzeyi üzerinde veya bir çizgi boyunca nesneleri işlemek için yararlı olabilir.
Hareket üzerindeki Kısıtlama alanı, hangi eksenlerin üzerinde hareket edilmesini önleyebileceğinizi belirtir. Varsayılan olarak, bu eksenler yerel değil genel olur, ancak bu değer aşağıda değiştirilebilir. Bu özellik bir bayrak olduğundan, herhangi bir sayıda seçenek seçilebilir.

MoveAxisConstraint Gösterimi

MinMaxScaleConstraint

Bu kısıtlama, bir nesnenin ölçeğini sınırlar ve kullanıcıların nesneleri kullanamayacak kadar küçük veya büyük boyutlara ölçeklendirmesini engellemek için kullanışlıdır. Hem tanıtıcı tabanlı ölçeklendirme ( BoundsControl ile) hem de iki elle doğrudan ölçeklendirme ( ObjectManipulator ile) için çalışır. İlk duruma göre seçeneği, belirli Minimum ve Maksimum ölçek değerlerinin mutlak değerler olup olmadığını veya nesnenin ilk ölçeğinde çarpılıp çarpılmayacağını tanımlar.

MinMaxScaleConstraint Gösterimi

RotationAxisConstraint

Bu kısıtlama, yönlendirilen bir nesnenin döndürülebileceği eksenleri düzeltmek için kullanılabilir. Bu, manipüle edilmiş bir nesneyi dik tutmak, ancak yine de y ekseni döndürmelerine izin vermek için yararlı olabilir, örneğin.
Döndürmedeki Kısıtlama alanı, döndürmeyi engelleyecek eksenleri belirtir. Varsayılan olarak, bu eksenler yerel değil genel olur, ancak bu değer aşağıda değiştirilebilir. Bu özellik bir bayrak olduğundan, herhangi bir sayıda seçenek seçilebilir.

RotationAxisConstraint Gösterimi