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

Automatikus kijelölés

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

Kézi kijelölés

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

Kényszer arcfelhasználója

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

Kényszer Rögzített távolságok

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

Rögzített forgatás

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

Rögzített forgatás a világra

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

Látszólagos méret fenntartása

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

Kényszer mozgatótengelye

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

Kényszerrotálási tengely

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

Minimális maximális constatint

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.