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

Automatisk markering

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

Manuell markering

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

Villkor ansiktsanvändare

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

Fast avstånd för begränsning

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

Fast rotation

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

Fast rotation till världen

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

Behåll skenbar storlek

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

Flytta begränsningsaxel

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

Rotationsaxel för villkor

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

Min Max Constatint

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.