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í
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í
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.
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.
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ý.
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í.
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.
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í.