Begränsningshanterare – MRTK2
Med villkorshanteraren kan du använda en uppsättning villkorskomponenter för en transformering. Komponenter av typen TransformConstraint
som är kopplade till spelobjektet kan beaktas.
Som standard samlar begränsningshanteraren automatiskt in alla villkorskomponenter som är kopplade till spelobjektet och tillämpar dem på bearbetade transformeringar.
Användarna kan dock välja att konfigurera listan över tillämpade begränsningar manuellt och endast tillåta att en delmängd av de kopplade begränsningarna tillämpas.
För närvarande stöder följande MRTK UX-element begränsningshanteraren:
Egenskaper och fält för kontroll
Begränsningshanteraren kan köras i två lägen:
- Val av automatisk begränsning
- Manuell begränsningsmarkering
Val av automatisk begränsning

Standardläget för villkorshanteraren, automatiskt begränsningsval, innehåller en lista över alla anslutna villkorskomponenter samt går till knappar och en knapp för att lägga till villkor.
Lägg till villkor för spelobjekt
Med den här knappen kan en begränsningskomponent läggas till direkt från begränsningshanterarens inspektör. Alla villkorstyper i ett projekt bör visas här. Mer information finns i transformeringsbegränsningar .
Gå till komponent
Alla begränsningar som finns på objektet visas här med knappen Gå till komponent . Den här knappen gör att inspektören bläddrar till den valda begränsningskomponenten så att den kan konfigureras.
Manuell begränsningsmarkering

Om villkorshanteraren är inställd på manuellt läge bearbetas endast begränsningar som är länkade i begränsningslistan och tillämpas på transformeringen. Listan som visas visar endast användarens valda begränsningar samt går till knappar eller alternativ för att ta bort eller lägga till poster. När du aktiverar manuellt läge för första gången fylls alla tillgängliga komponenter i listan som startpunkt för att välja anslutna villkorskomponenter.
Ta bort post
Då tas posten bort från den manuellt markerade listan. Observera att det här alternativet inte tar bort begränsningskomponenten från spelobjektet. Begränsningskomponenter måste alltid tas bort manuellt för att säkerställa att ingen annan komponent som refererar till den här komponenten av misstag bryts.
Lägg till post
Lägg till post öppnar en listruta som visar alla tillgängliga villkorskomponenter som inte finns i den manuella listan ännu. Genom att klicka på någon av de poster som komponenten ska läggas till i den manuella begränsningsmarkeringen.
Lägg till ny begränsning
Det här alternativet lägger till en komponent av den valda typen i spelobjektet och lägger till den nyligen skapade begränsningskomponenten i listan över manuella villkor.
Transformera begränsningar
Begränsningar kan användas för att begränsa manipulering på något sätt. Vissa program kan till exempel kräva rotation, men kräver också att objektet förblir upprätt. I det här fallet kan en RotationAxisConstraint
läggas till i objektet och användas för att begränsa rotation till y-axelrotation. MRTK innehåller ett antal begränsningar, som alla beskrivs nedan.
Det är också möjligt att definiera nya begränsningar och använda dem för att skapa unika manipulationsbeteenden som kan behövas för vissa program. Det gör du genom att skapa ett skript som ärver från TransformConstraint
och implementerar den abstrakta ConstraintType
egenskapen och den abstrakta ApplyConstraint
metoden. När du lägger till en ny begränsning i objektet bör den begränsa manipuleringen på det sätt som definierades. Den här nya begränsningen bör också visas i autoval av begränsningshanteraren eller lägga till listrutan för posten i manuellt läge.
Alla begränsningar som tillhandahålls av MRTK har följande egenskaper:
Handtyp
Anger om begränsningen används för en hand, två hand eller båda typerna av manipulering. Eftersom den här egenskapen är en flagga kan båda alternativen väljas.
- En hand: Villkoret används under en handmanipulering om den väljs.
- Tvåhänta: Villkoret används under två handmanipulation om det väljs.
Närhetstyp
Anger om villkoret används för nära, långt eller båda typerna av manipulering. Eftersom den här egenskapen är en flagga kan båda alternativen väljas.
- Nära: Villkoret används vid nära manipulering om det väljs.
- Långt: Villkoret används vid långt manipulering om det väljs.
FaceUserConstraint

När den här begränsningen är kopplad till ett objekt begränsas rotationen så att objektet alltid möter användaren. Detta är användbart för skiffer eller paneler. Egenskaperna för FaceUserConstraint
är följande:
Bort med ansiktet
Objektet är borta från användaren om det är sant.
FixedDistanceConstraint

Den här begränsningen åtgärdar avståndet mellan det manipulerade objektet och en annan objekttransformering vid manipuleringsstart. Detta är användbart för beteende som att fästa avståndet från det manipulerade objektet till huvudtransformeringen. Egenskaperna för FixedDistanceConstraint
är följande:
Villkorstransformering
Det här är den andra transformering som det manipulerade objektet har ett fast avstånd till. Standardvärdet för kameratransformering.
FixedRotationToUserConstraint

Den här begränsningen åtgärdar den relativa rotationen mellan användaren och det manipulerade objektet medan det manipuleras. Detta är användbart för skiffer eller paneler eftersom det säkerställer att det manipulerade objektet alltid visar samma ansikte för användaren som det gjorde i början av manipuleringen.
FixedRotationToUserConstraint
Har inga unika egenskaper.
FixedRotationToWorldConstraint

Den här begränsningen åtgärdar den globala rotationen av det manipulerade objektet medan det manipuleras. Detta kan vara användbart i fall där ingen rotation ska förmedlas genom manipulering.
FixedRotationToWorldConstraint
Har inga unika egenskaper:
MaintainApparentSizeConstraint

När den här begränsningen är kopplad till ett objekt, oavsett hur långt objektet kommer från användaren, kommer det att behålla samma uppenbara storlek för användaren (dvs. att det tar samma andel av användarens synfält). Detta kan användas för att säkerställa att en skiffer- eller textpanel förblir läsbar vid manipulering.
MaintainApparentSizeConstraint
Har inga unika egenskaper:
MoveAxisConstraint

Den här begränsningen kan användas för att korrigera längs vilka axlar ett manipulerat objekt kan flyttas. Detta kan vara användbart för att manipulera objekt över ytan på ett plan eller längs en linje. Egenskaperna för MoveAxisConstraint
är följande:
Begränsning av förflyttning
Anger vilka axlar som ska förhindra förflyttning. Som standard är dessa axlar globala snarare än lokala, men detta kan ändras nedan. Eftersom den här egenskapen är en flagga kan valfritt antal alternativ väljas.
- X-axel: Förflyttning längs x-axeln begränsas om den väljs.
- Y-axel: Rörelse längs y-axeln begränsas om den väljs.
- Z-axel: Förflyttning längs z-axeln begränsas om den väljs.
Använd lokalt utrymme för villkor
Begränsar det manipulerade objektets lokala transformeringsaxlar om det är sant. Falskt som standard.
RotationAxisConstraint

Den här begränsningen kan användas för att åtgärda vilka axlar som ett manipulerat objekt kan roteras på. Detta kan vara användbart för att hålla ett manipulerat objekt upprätt, men ändå tillåta y-axelrotationer, till exempel. Egenskaperna för RotationAxisConstraint
är följande:
Begränsning av rotation
Anger vilka axlar som ska förhindra rotation. Som standard är dessa axlar globala snarare än lokala, men detta kan ändras nedan. Eftersom den här egenskapen är en flagga kan valfritt antal alternativ väljas.
- Y-axel: Rotation om y-axeln begränsas om den väljs.
- Z-axel: Rotation om z-axeln begränsas om den väljs.
- X-axel: Rotation om x-axeln begränsas om den väljs.
Använd lokalt utrymme för villkor
Begränsar det manipulerade objektets lokala transformeringsaxlar om det är sant. Falskt som standard.
MinMaxScaleConstraint

Med den här begränsningen kan du ange lägsta och högsta värden för det manipulerade objektets skala. Detta är användbart för att förhindra användare från att skala ett objekt för litet eller för stort. Egenskaperna för MinMaxScaleConstraint
är följande:
Skalningsminimum
Minsta skalningsvärde under manipulering.
Skala maximalt
Det maximala skalningsvärdet under manipulering.
Relativt till initialt tillstånd
Om värdet är sant tolkas värdena ovan som relativa till objektens inledande skalning. Annars tolkas de som absoluta skalningsvärden.