Správce omezení – MRTK2
Správce omezení umožňuje použít sadu komponent omezení na transformaci. Komponenty typu TransformConstraint
, které jsou připojeny k hernímu objektu, je možné vzít v úvahu.
Ve výchozím nastavení správce omezení automaticky shromáždí všechny komponenty omezení připojené k objektu hry a použije je pro zpracované transformace.
Uživatelé se však můžou rozhodnout, že seznam použitých omezení nakonfigurují ručně a povolí použití pouze podmnožině připojených omezení.
V současné době podporují správce omezení následující prvky uživatelského prostředí MRTK:
Vlastnosti a pole inspektoru
Správce omezení je možné provozovat ve dvou režimech:
- Výběr automatického omezení
- Ruční výběr omezení
Výběr automatického omezení
Výchozí režim správce omezení, výběr automatického omezení, poskytne seznam všech připojených součástí omezení a také přejít na tlačítka a tlačítko přidat omezení.
Přidání omezení k hernímu objektu
Toto tlačítko umožňuje přidat komponentu omezení přímo z inspektoru správce omezení. Tady by měly být viditelné všechny typy omezení v projektu. Další informace najdete v tématu Omezení transformace .
Přejít na komponentu
Všechna omezení nalezená u objektu budou uvedená tady pomocí tlačítka Přejít na komponentu . Toto tlačítko způsobí, že se inspektor posune na vybranou komponentu omezení, aby ji bylo možné nakonfigurovat.
Ruční výběr omezení
Pokud je správce omezení nastavený na ruční režim, zpracují se a použijí na transformaci jenom omezení, která jsou propojená v seznamu omezení. V zobrazeném seznamu se zobrazí pouze omezení vybraná uživatelem a také přechod na tlačítka nebo možnosti pro odebrání nebo přidání položek. Při prvním povolení ručního režimu správce omezení naplní seznam všech dostupných komponent jako výchozí bod pro výběr připojených komponent omezení.
Odebrat položku
Tím se položka odebere z ručně vybraného seznamu. Upozorňujeme, že tato možnost neodebere komponentu omezení z herního objektu. Součásti omezení je vždy nutné odebrat ručně, aby nedošlo k náhodnému narušení žádné jiné komponenty odkazující na tuto komponentu.
Přidat položku
Položka Přidat otevře rozevírací seznam se všemi dostupnými komponentami omezení, které ještě nejsou v ručním seznamu. Kliknutím na některou z položek bude tato komponenta přidána do ručního výběru omezení.
Přidat nové omezení
Tato možnost přidá komponentu vybraného typu do herního objektu a nově vytvořenou komponentu omezení přidá do seznamu ručních omezení.
Omezení transformace
Omezení se dají použít k omezení manipulace nějakým způsobem. Některé aplikace můžou například vyžadovat otočení, ale také vyžadovat, aby objekt zůstal ve svislé poloze. V tomto případě lze k objektu RotationAxisConstraint
přidat objekt a použít k omezení otočení na osu y. MRTK poskytuje řadu 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. Po přidání nového omezení do objektu by mělo omezit manipulaci způsobem, který byl definován. Toto nové omezení by se mělo zobrazit také v automatickém výběru správce omezení nebo v rozevíracím seznamu přidat položku v ručním režimu.
Všechna omezení, která poskytuje sada MRTK, mají následující vlastnosti:
Typ ruky
Určuje, zda se omezení používá pro jednu, oboustrannou nebo oboustrannou manipulaci. 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 oboustranné manipulaci, pokud je vybráno.
Typ bezkontaktní komunikace
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
Když je toto omezení připojeno k objektu, bude otočení omezeno tak, aby objekt vždy čelil uživateli. To je užitečné pro tabule nebo panely. Vlastnosti jsou FaceUserConstraint
následující:
Obličej pryč
Pokud je hodnota true, objekt se od uživatele odkláněl.
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. Vlastnosti jsou FixedDistanceConstraint
následující:
Transformace omezení
Toto je druhá transformace, ke které bude mít manipulovaný objekt pevnou vzdálenost. Výchozí hodnota je transformace kamery.
FixedRotationToUserConstraint
Toto omezení opravuje relativní otočení mezi uživatelem a manipulovaným objektem při manipulaci s objektem. To je užitečné pro tabule nebo panely, protože zajišťuje, že manipulovaný objekt zobrazuje uživateli vždy stejnou tvář jako na začátku manipulace. Objekt FixedRotationToUserConstraint
nemá žádné jedinečné vlastnosti.
FixedRotationToWorldConstraint
Toto omezení opravuje globální otočení manipulovaného objektu při manipulaci s objektem. To může být užitečné v případech, kdy by se žádná obměna neměla provádět manipulací. Objekt FixedRotationToWorldConstraint
nemá žádné jedinečné vlastnosti:
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ý. Objekt MaintainApparentSizeConstraint
nemá žádné jedinečné vlastnosti:
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. Vlastnosti jsou MoveAxisConstraint
následující:
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í.
- Osa X: Pohyb podél osy x je omezený, pokud je vybrán.
- Osa Y: Pohyb podél osy y je omezený, pokud je vybrán.
- Osa Z: Pohyb podél osy z je omezený, pokud je vybrán.
Použití místního prostoru pro omezení
Bude omezit relativní osu místní transformace manipulovaného objektu, pokud je true. Ve výchozím nastavení nepravda.
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. Vlastnosti jsou RotationAxisConstraint
následující:
Omezení rotace
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í.
- Osa Y: Otáčení o osu y je omezené, pokud je vybráno.
- Osa Z: Otočení o osu z je omezené, pokud je vybráno.
- Osa X: Otočení o osu x je omezené, pokud je vybráno.
Použití místního prostoru pro omezení
Bude omezit relativní osu místní transformace manipulovaného objektu, pokud je true. Ve výchozím nastavení nepravda.
MinMaxScaleConstraint
Toto omezení umožňuje nastavit minimální a maximální hodnoty pro měřítko manipulovaného objektu. To je užitečné, pokud uživatelům zabráníte ve škálování objektu příliš malého nebo příliš velkého. Vlastnosti jsou MinMaxScaleConstraint
následující:
Minimální měřítko
Minimální hodnota škálování během manipulace.
Maximální škálování
Maximální hodnota škálování během manipulace.
Relativní k počátečnímu stavu
Pokud ano, budou výše uvedené hodnoty interpretovány jako relativní vzhledem k počátečnímu škálování objektů. V opačném případě budou interpretovány jako absolutní hodnoty škálování.