Sdílet prostřednictvím


Omezení – MRTK3

ConstraintManager umožňuje použít na transformaci sadu komponent omezení. Ve výchozím nastavení správce omezení automaticky shromáždí všechny připojené komponenty omezení a použije je u cílového objektu. Uživatelé se ale můžou také rozhodnout nakonfigurovat seznam použitých omezení ručně a povolit použití pouze podmnožině připojených omezení.

Poznámka

MRTK3 v současné době nabízí omezenou podmnožinu omezení z MRTK 2.x. V současné době zkoumáme refaktor systému omezení, který sjednocuje pracovní postup pro vývojáře s Řešiteli a Elastics. Sledujte nejnovější informace!

V současné době podporují omezení následující prvky uživatelského prostředí MRTK:

Správce omezení může pracovat ve dvou režimech:

  • Výběr automatického omezení
  • Ruční výběr omezení

Výběr omezení

Výběr automatického omezení

Režim automatického výběru

Výchozí automatický režim zobrazí seznam všech připojených komponent omezení. Můžete přejít přímo na komponentu v inspektoru pomocí tlačítek Přejít na komponentu nebo přidat nové omezení z rozevíracího seznamu.

Ruční výběr omezení

Režim ručního výběru

Pokud je správce omezení nastavený na ruční režim, zpracují se a použijí na transformaci pouze omezení propojená v seznamu omezení. Při prvním povolení ručního režimu správce automaticky naplní seznam všemi aktuálně připojenými omezeními.

Poznámka

Akce Odebrat položku odebere omezení pouze ze seznamu ručního výběru. Komponenta bude stále k dispozici v objektu GameObject.

Příkaz spuštění

Pořadí provádění jednotlivých omezení lze definovat v možnosti Pořadí provádění samotného omezení. Pořadí se projeví v seznamu zobrazeném ve správci omezení. Některá omezení se budou chovat odlišně, když jsou kombinována v různých pořadích, proto mějte na paměti priority jednotlivých omezení a upravte jejich pořadí odpovídajícím způsobem.

Omezení transformace

Pomocí omezení můžete nějakým způsobem omezit manipulaci. Některé aplikace mohou například vyžadovat otočení a aby objekt zůstal vzpřímený. V tomto případě lze k objektu RotationAxisConstraint přidat objekt a použít k omezení otočení na osu y. SADA MRTK poskytuje několik omezení, která jsou popsána níže.

Je také možné definovat nová omezení a použít je k vytvoření jedinečného chování při manipulaci, které může být pro některé aplikace potřeba. Chcete-li to provést, vytvořte skript, který dědí z TransformConstraint a implementuje abstraktní ConstraintType vlastnost a abstraktní ApplyConstraint metodu. Nové omezení by se mělo zobrazit v rozevíracím seznamu a při přidání do objektu by se mělo automaticky zaregistrovat ve správci omezení.

Všechna omezení, která poskytuje sada MRTK, mají následující vlastnosti:

Typ ruky určuje, jestli se omezení používá pro ovládání jednou rukou, obou rukou nebo pro oba druhy manipulace. Vzhledem k tomu, že tato vlastnost je příznakem, je možné vybrat obě možnosti.

  • Jednou rukou: Omezení se použije při manipulaci s jednou rukou, pokud je vybráno.
  • Oboustranné: Omezení se použije při manipulaci s oběma rukama, pokud je vybráno.

ProximityType určuje, zda se omezení používá pro blízké, vzdálené nebo oba druhy manipulace. Vzhledem k tomu, že tato vlastnost je příznakem, je možné vybrat obě možnosti.

  • Blízko: Omezení se použije při blízké manipulaci, pokud je vybráno.
  • Daleko: Omezení se použije při manipulaci s dalekou vzdáleností, pokud je vybráno.

FaceUserConstraint

Toto omezení omezuje rotaci objektu tak, aby byl vždy tváří v tvář uživateli. Možnost Líce pryč určuje, jestli se má použít kladná nebo záporná osa Z.

Ukázka FaceUserConstraint

FixedDistanceConstraint

Toto omezení opravuje vzdálenost mezi manipulovaným objektem a jinou transformací objektu při zahájení manipulace. To je užitečné pro chování, jako je fixace vzdálenosti od manipulovaného objektu k transformaci hlavy. Pole transformace Omezení má výchozí hodnotu pro transformaci kamery a je to druhá transformace, ke které manipulovaný objekt bude mít pevnou vzdálenost.

Ukázka FixedDistanceConstraint

MaintainApparentSizeConstraint

Když je toto omezení připojené k objektu, bez ohledu na to, jak daleko je objekt od uživatele, zachová uživateli stejnou zjevnou velikost (tj. zabere stejný podíl zorného pole uživatele). To se dá použít k zajištění toho, aby panel s tabulí nebo textem zůstal při manipulaci čitelný.

Ukázka maintainApparentSizeConstraint

MoveAxisConstraint

Toto omezení lze použít k opravě os, podél kterých lze manipulovat s objektem. To může být užitečné při manipulaci s objekty nad povrchem roviny nebo podél čáry.
Pole Omezení pohybu určuje, na kterých osách se má zabránit pohybu. Ve výchozím nastavení budou tyto osy globální, nikoli místní, ale můžete to změnit níže. Vzhledem k tomu, že tato vlastnost je příznakem, lze vybrat libovolný počet možností.

Ukázka moveAxisConstraint

MinMaxScaleConstraint

Toto omezení omezuje měřítko objektu, což je užitečné pro zabránění uživatelům ve škálování objektů na nepoužitelně malé nebo velké velikosti. Funguje pro škálování na základě popisovačů (s BoundsControl) i pro přímé škálování dvěma rukama (pomocí ObjectManipulatoru). Možnost Relativní k počátečnímu stavu definuje, zda jsou konkrétní hodnoty minimálního a maximálního měřítka absolutními hodnotami, nebo zda jsou vynásobeny počátečním měřítkem objektu.

Ukázka MinMaxScaleConstraint

RotationAxisConstraint

Toto omezení lze použít k opravě os os, s nimiž se manipulovaný objekt dá otáčet. To může být užitečné pro udržování manipulovaného objektu ve vzpřímené poloze, ale umožňuje například otáčení osy y.
Pole Omezení otáčení určuje, které osy se mají zabránit otáčení. Ve výchozím nastavení budou tyto osy globální, nikoli místní, ale můžete to změnit níže. Vzhledem k tomu, že tato vlastnost je příznakem, lze vybrat libovolný počet možností.

Ukázka RotationAxisConstraint