Kényszerkezelő – MRTK2
A kényszerkezelő lehetővé teszi, hogy kényszerösszetevőket alkalmazzon egy átalakításra. A játékobjektumhoz csatolt típusú TransformConstraint
összetevőket figyelembe lehet venni.
Alapértelmezés szerint a kényszerkezelő automatikusan összegyűjti a játékobjektumhoz csatolt összes kényszerösszetevőt , és alkalmazza őket a feldolgozott átalakításokra.
A felhasználók azonban dönthetnek úgy, hogy manuálisan konfigurálják az alkalmazott kényszerek listáját, és csak a csatolt kényszerek egy részhalmazát engedélyezik.
Jelenleg a következő MRTK UX-elemek támogatják a kényszerkezelőt:
Vizsgáló tulajdonságai és mezői
A kényszerkezelő két módban működtethető:
- Automatikus kényszer kiválasztása
- Manuális kényszer kiválasztása
Automatikus kényszer kiválasztása
A kényszerkezelő alapértelmezett módja, az automatikus kényszerkiválasztás az összes csatolt kényszerösszetevő listáját tartalmazza, valamint a gombok és a kényszer hozzáadása gombot.
Kényszer hozzáadása a játékobjektumhoz
Ez a gomb lehetővé teszi, hogy a kényszerösszetevő közvetlenül a kényszerkezelő ellenőrtől legyen hozzáadva. A projekt összes kényszertípusának itt láthatónak kell lennie. További információt az átalakításra vonatkozó korlátozások című témakörben talál.
Ugrás az összetevőre
Az objektumon található összes korlátozás itt látható egy Ugrás az összetevőre gombbal. Ez a gomb azt eredményezi, hogy az ellenőr görget a kiválasztott kényszerösszetevőhöz, hogy konfigurálható legyen.
Manuális kényszer kiválasztása
Ha a kényszerkezelő manuális módra van állítva, csak a kényszerlistában csatolt kényszerek lesznek feldolgozva és alkalmazva az átalakításra. A megjelenített lista csak a felhasználó által kiválasztott korlátozásokat jeleníti meg, valamint a bejegyzések eltávolítására vagy hozzáadására vonatkozó gombokra vagy beállításokra mutat. Amikor első alkalommal engedélyezi a manuális módot, a kényszerkezelő kitölti a listát, és kiindulópontként az összes elérhető összetevőt kiválasztja a csatolt kényszerösszetevők kiválasztásához.
Bejegyzés eltávolítása
Ezzel eltávolítja a bejegyzést a manuálisan kijelölt listából. Vegye figyelembe, hogy ez a beállítás nem távolítja el a kényszerösszetevőt a játékobjektumból. A kényszerösszetevőket mindig manuálisan kell eltávolítani, hogy ne szakadjanak meg véletlenül az összetevőre hivatkozó más összetevők.
Bejegyzés hozzáadása
A bejegyzés hozzáadása egy legördülő menüt nyit meg, amely megjeleníti az összes olyan elérhető kényszerösszetevőt, amely még nem szerepel a manuális listában. Ha rákattint bármelyik bejegyzésre, az összetevő hozzá lesz adva a manuális kényszer kiválasztásához.
Új kényszer hozzáadása
Ez a beállítás hozzáadja a kiválasztott típus egy összetevőjét a játékobjektumhoz, és hozzáadja az újonnan létrehozott kényszerösszetevőt a manuális kényszerek listájához.
Kényszerek átalakítása
A korlátozásokkal valamilyen módon korlátozható a manipuláció. Előfordulhat például, hogy egyes alkalmazások rotálást igényelnek, de azt is megkövetelik, hogy az objektum függőlegesen maradjon. Ebben az esetben hozzáadhat egy RotationAxisConstraint
értéket az objektumhoz, és az y tengely elforgatására korlátozhatja a forgatást. Az MRTK számos korlátozást tartalmaz, amelyek mindegyiket az alábbiakban ismertetjük.
Új korlátozásokat is meghatározhat, és ezek használatával egyedi manipulációs viselkedést hozhat létre, amelyekre egyes alkalmazások esetében szükség lehet. Ehhez hozzon létre egy szkriptet, amely örökli TransformConstraint
és implementálja az absztrakt ConstraintType
tulajdonságot és az absztrakt metódust ApplyConstraint
. Ha új kényszert ad hozzá az objektumhoz, a definiált módon kell korlátoznia a manipulációt. Ennek az új kényszernek a kényszerkezelő automatikus kijelölésében is meg kell jelennie, vagy manuális módban hozzá kell adnia a bejegyzés legördülő menüjét.
Az MRTK által megadott összes korlátozás a következő tulajdonságokkal rendelkezik:
Kéz típusa
Meghatározza, hogy a kényszert egykezes, kétkezes vagy mindkét típusú manipulációhoz használják-e. Mivel ez a tulajdonság egy jelölő, mindkét lehetőség kiválasztható.
- Egykezes: A kényszert egykezes manipuláció során használjuk, ha kiválasztjuk.
- Kétkezes: A kétkezes manipuláció során kényszert használunk, ha kiválasztjuk.
Közelségi típus
Meghatározza, hogy a kényszert közel, távolról vagy mindkét típusú manipulációhoz használják-e. Mivel ez a tulajdonság egy jelölő, mindkét lehetőség kiválasztható.
- Near: A kényszert a program a közeli manipuláció során használja, ha kiválasztja.
- Far: A kényszert a rendszer a távoli manipuláció során fogja használni, ha kiválasztja.
FaceUserConstraint
Ha ez a kényszer egy objektumhoz van csatolva, a rotáció korlátozott lesz, így az objektum mindig szembe fog nézni a felhasználóval. Ez a pala vagy panelek esetében hasznos. A tulajdonságai FaceUserConstraint
a következők:
Arccal távol
Ha igaz, az objektum a felhasználótól távol áll.
FixedDistanceConstraint
Ez a kényszer kijavítja a manipulált objektum és egy másik objektumátalakítás közötti távolságot a manipuláció indításakor. Ez olyan viselkedésekhez hasznos, mint a manipulált objektum és a fej átalakító közötti távolság rögzítése. A tulajdonságai FixedDistanceConstraint
a következők:
Kényszer átalakítása
Ez a másik átalakítás, amellyel a manipulált objektum rögzített távolságban lesz. Alapértelmezés szerint a kamera átalakítás.
FixedRotationToUserConstraint
Ez a kényszer kijavítja a felhasználó és a manipulált objektum közötti relatív rotációt a módosítás közben. Ez pala vagy panelek esetében hasznos, mivel biztosítja, hogy a manipulált objektum mindig ugyanazzal az arccal jelenik meg a felhasználónak, mint a manipuláció elején. A FixedRotationToUserConstraint
nem rendelkezik egyedi tulajdonságokkal.
FixedRotationToWorldConstraint
Ez a kényszer kijavítja a manipulált objektum globális rotációját a módosítás alatt. Ez olyan esetekben lehet hasznos, amikor manipulációval nem szabad rotációt kiosztani. A FixedRotationToWorldConstraint
nem rendelkezik egyedi tulajdonságokkal:
MaintainApparentSizeConstraint
Ha ez a kényszer egy objektumhoz van csatolva, függetlenül attól, hogy milyen messze van az objektum a felhasználótól, ugyanolyan látszólagos méretet fog fenntartani a felhasználónak (azaz a felhasználó nézetmezőjének azonos arányát veszi fel). Ezzel biztosítható, hogy a pala vagy a szövegpanel olvasható maradjon a módosítás során. A MaintainApparentSizeConstraint
nem rendelkezik egyedi tulajdonságokkal:
MoveAxisConstraint
Ezzel a korlátozással kijavítható, hogy a módosított objektum tengelyei mely mentén helyezhetők át. Ez akkor lehet hasznos, ha objektumokat módosít egy sík felszínén vagy egy vonal mentén. A tulajdonságai MoveAxisConstraint
a következők:
Mozgás korlátozása
Itt adhatja meg, hogy mely tengelyeken szeretné megakadályozni a mozgást. Alapértelmezés szerint ezek a tengelyek nem helyiek, hanem globálisak lesznek, de ez alább módosítható. Mivel ez a tulajdonság egy jelölő, tetszőleges számú lehetőség választható ki.
- X tengely: Az x tengely mentén történő mozgás korlátozott, ha ki van választva.
- Y tengely: Az y tengely mentén történő mozgás korlátozott, ha ki van választva.
- Z tengely: A z tengely mentén történő mozgás korlátozott, ha ki van választva.
Helyi terület használata a korlátozáshoz
Korlátozza a módosított objektum helyi átalakító tengelyeinek relatív korlátozását, ha igaz. Alapértelmezés szerint hamis.
RotációAxisConstraint
Ezzel a korlátozással kijavítható, hogy mely tengelyek elforgathatók egy manipulált objektumban. Ez hasznos lehet a manipulált objektumok függőlegesen tartásához, de továbbra is lehetővé teszi például az y tengely elforgatását. A tulajdonságok a RotationAxisConstraint
következők:
Forgatási kényszer
Itt adhatja meg, hogy mely tengelyek esetében tiltsa le a forgatást. Alapértelmezés szerint ezek a tengelyek nem helyi, hanem globálisak lesznek, de ez alább módosítható. Mivel ez a tulajdonság egy jelölő, tetszőleges számú lehetőség közül választhat.
- Y tengely: Az y tengely körüli forgatás korlátozott, ha be van jelölve.
- Z tengely: A z tengely körüli forgatás korlátozott, ha be van jelölve.
- X tengely: Az x tengely körüli forgatás korlátozott, ha ki van jelölve.
Helyi terület használata a korlátozáshoz
Korlátozza a módosított objektum helyi átalakító tengelyeinek relatív korlátozását, ha igaz. Alapértelmezés szerint hamis.
MinMaxScaleConstraint
Ez a kényszer lehetővé teszi a minimális és maximális értékek beállítását a manipulált objektum skálázásához. Ez azért hasznos, mert megakadályozza, hogy a felhasználók túl kicsi vagy túl nagy méretű objektumokat skáláznak. A tulajdonságok a MinMaxScaleConstraint
következők:
Minimum skálázás
A legkisebb skálázási érték a manipuláció során.
Maximális skálázás
A legnagyobb skálázási érték a manipuláció során.
A kezdeti állapothoz viszonyítva
Ha igaz, a fenti értékek az objektumok kezdeti skálázásához viszonyítva lesznek értelmezve. Ellenkező esetben ezek abszolút skálázási értékekként lesznek értelmezve.