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í

Automatický výběr

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í

Ruční výběr

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

Uživatel omezující tvář

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

Omezení Pevné vzdálenosti

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

Pevné otočení

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

Pevná rotace do světa

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

Zachovat zdánlivou velikost

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

Omezení přesunout osu

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

Osa otočení omezení

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

Minimální maximální konstatint

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