Ograniczenia — MRTK3
ConstraintManager
Umożliwia zastosowanie zestawu składników ograniczeń do przekształcenia. Domyślnie menedżer ograniczeń automatycznie zbiera wszystkie dołączone składniki ograniczenia i stosuje je do obiektu docelowego. Jednak użytkownicy mogą również zdecydować się na ręczne skonfigurowanie listy zastosowanych ograniczeń i zezwalanie na używanie tylko podzestawu dołączonych ograniczeń.
Uwaga
MRTK3 obecnie oferuje ograniczony podzbiór ograniczeń z zestawu narzędzi MRTK 2.x. Obecnie badamy refaktoryzację systemu ograniczeń w celu ujednolicenia przepływu pracy dewelopera za pomocą modułów rozwiązywania i elastycznych. Śledź aktualności!
Obecnie następujące elementy środowiska użytkownika zestawu narzędzi MRTK obsługują ograniczenia:
Menedżer ograniczeń może działać w dwóch trybach:
- Wybór ograniczeń automatycznych
- Wybór ograniczeń ręcznych
Wybór ograniczeń
Wybór ograniczeń automatycznych
Domyślny tryb automatyczny będzie zawierać listę wszystkich dołączonych składników ograniczeń. Możesz przejść bezpośrednio do składnika w inspektorze za pomocą przycisków Przejdź do składnika lub dodać nowe ograniczenie z listy rozwijanej.
Wybór ograniczeń ręcznych
Jeśli menedżer ograniczeń jest ustawiony na tryb ręczny, tylko ograniczenia połączone na liście ograniczeń są przetwarzane i stosowane do przekształcenia. Podczas włączania trybu ręcznego po raz pierwszy menedżer automatycznie wypełni listę wszystkimi aktualnie dołączonymi ograniczeniami.
Uwaga
Akcja Usuń wpis spowoduje usunięcie ograniczenia tylko z listy wyboru ręcznego. Składnik będzie nadal obecny w obiekcie GameObject.
Kolejność wykonywania
Kolejność wykonywania każdego ograniczenia można zdefiniować w opcji Kolejność wykonywania w samym ograniczeniu. Kolejność zostanie odzwierciedlona na liście wyświetlanej w menedżerze ograniczeń. Niektóre ograniczenia będą zachowywać się inaczej, gdy są łączone w różnych zamówieniach, dlatego należy pamiętać o priorytetach każdego ograniczenia i odpowiednio dostosować ich kolejność.
Przekształcanie ograniczeń
Ograniczenia umożliwiają ograniczenie manipulacji w jakiś sposób. Na przykład niektóre aplikacje mogą wymagać rotacji i że obiekt pozostaje w pozycji pionowej. W takim przypadku do obiektu można dodać obiekt RotationAxisConstraint
i użyć go do ograniczenia obrotu do obrotu osi y. Zestaw narzędzi MRTK udostępnia kilka ograniczeń, z których wszystkie zostały opisane poniżej.
Istnieje również możliwość zdefiniowania nowych ograniczeń i używania ich do tworzenia unikatowych zachowań manipulowania, które mogą być potrzebne w niektórych aplikacjach. W tym celu utwórz skrypt, który dziedziczy z TransformConstraint
i implementuje właściwość abstrakcyjną ConstraintType
i metodę abstrakcyjną ApplyConstraint
. Nowe ograniczenie powinno pojawić się na liście rozwijanej i powinno zostać automatycznie zarejestrowane w menedżerze ograniczeń po dodaniu do obiektu.
Wszystkie ograniczenia udostępniane przez zestaw narzędzi MRTK współdzielą następujące właściwości:
Typ ręki określa, czy ograniczenie jest używane dla jednegoręcznego, dwuręcznego lub obu rodzajów manipulacji. Ponieważ ta właściwość jest flagą, można wybrać obie opcje.
- Jedna ręka: Ograniczenie będzie używane podczas manipulowania rękami w przypadku wybrania.
- Dwie ręce: Ograniczenie będzie używane podczas manipulowania dwiema rękami, jeśli zostanie wybrane.
Funkcja ProximityType określa, czy ograniczenie jest używane do manipulowania niemal, daleko lub w obu rodzajach manipulacji. Ponieważ ta właściwość jest flagą, można wybrać obie opcje.
- Blisko: Ograniczenie będzie używane podczas bliskiej manipulacji, jeśli wybrano.
- Daleko: Ograniczenie będzie używane podczas dalekiej manipulacji, jeśli wybrano.
FaceUserConstraint
To ograniczenie ogranicza rotację obiektu, tak aby zawsze był on wyświetlany użytkownikowi. Opcja Odejście od twarzy określa, czy jest używana dodatnia, czy ujemna oś Z.
FixedDistanceConstraint
To ograniczenie naprawia odległość między manipulowanym obiektem a innym przekształceniem obiektu przy rozpoczęciu manipulowania. Jest to przydatne w przypadku zachowań, takich jak naprawianie odległości od manipulowanego obiektu do przekształcenia głowy. Pole przekształcania ograniczeń domyślnie przekształca się w aparat i jest drugą transformacją, z którą obiekt manipulowany będzie miał stałą odległość.
MaintainApparentSizeConstraint
Gdy to ograniczenie jest dołączone do obiektu, niezależnie od tego, jak daleko obiekt jest od użytkownika, zachowa ten sam widoczny rozmiar dla użytkownika (tj. zajmie to ten sam odsetek pola widoku użytkownika). Może to służyć do zapewnienia, że tablica łupków lub panel tekstowy pozostaje czytelny podczas manipulowania.
MoveAxisConstraint
To ograniczenie może służyć do naprawienia osi, do których można przenieść manipulowany obiekt. Może to być przydatne do manipulowania obiektami na powierzchni płaszczyzny lub wzdłuż linii.
Ograniczenie w polu ruchu określa, które osie mają zapobiegać ruchowi. Domyślnie te osie będą globalne, a nie lokalne, ale można je zmienić poniżej. Ponieważ ta właściwość jest flagą, można wybrać dowolną liczbę opcji.
MinMaxScaleConstraint
To ograniczenie ogranicza skalę obiektu, co jest przydatne w celu uniemożliwienia użytkownikom skalowania obiektów w nieużywanie małych lub dużych rozmiarach. Działa zarówno w przypadku skalowania opartego na obsłudze (z funkcją BoundsControl), jak i z dwuręcznym skalowaniem bezpośrednim (z obiektem ObjectManipulator). Opcja Względna do stanu początkowego określa, czy określone wartości minimalnej i maksymalnej skali są wartościami bezwzględnym, czy też są mnożone w początkowej skali obiektu.
RotationAxisConstraint
To ograniczenie może służyć do naprawienia osi, które można obrócić manipulowanym obiektem. Może to być przydatne do utrzymania manipulowanego obiektu w pozycji pionowej, ale nadal zezwala na rotacje osi y, na przykład.
Ograniczenie w polu rotacji określa, które osie mają zapobiegać rotacji. Domyślnie te osie będą globalne, a nie lokalne, ale można je zmienić poniżej. Ponieważ ta właściwość jest flagą, można wybrać dowolną liczbę opcji.