Övning – Lägga till handinteraktion med objectmanipulator

Slutförd

ObjectManipulator-skriptet stöder direktmanipulering-modellen för indata från händer och rörelsekontroller. När skriptet är kopplat till ett objekt kan användaren flytta, skala eller rotera objektet med händerna. I den här övningen skapar du två kuber, kopplar de nödvändiga skripten till dem och flyttar sedan runt kuberna.

Lägg till och justera den första kuben

  1. I menyraden väljer du GameObject>3D Object>Cube.

    Skärmbild av menykommandon för att lägga till kuben.

    Kubens standardstorlek är en kubikmeter, som är för stor för våra syften. Vi skalar ned storleken till 20 kubikcentikmeter.

  2. Välj kuben och gå sedan till inspektören. Ändra kubens skala-värden i Transform-sektionen till följande:

    X = 0,2, Y = 0,2, Z = 0,2

    Kuben placerades i scenen vid standardpositionen (0,0,0). Det innebär att kuben är i samma position som användarens headset och att användaren inte kan se kuben förrän den flyttas bakåt. Vi ändrar kubens positionsvärden så att den är på en bättre plats för visning.

  3. I Inspectorändrar du kubens Position värden i avsnittet Transformera till följande:

    X = -0,2, Y = 1,6, Z = 0,5

    Skärmbild av kubens transformeringskomponent efter uppdateringar.

    Vi vill kunna se tre sidor av kuben, så vi ändrar även kubens rotation.

  4. I Inspectorändrar du kubens Rotationsvärden i Transform-sektionen till följande:

    X = 9, Y = 14, Z = 0

    Tips

    Om du vill zooma in på kuben markerar du den, kontrollerar att markören hovrar över fönstret Scene och trycker på tangenten F. Du kan zooma in på valfritt objekt på det här sättet.

Lägg till skripten i kuben

För att ett objekt ska vara "greppbart" med spårade händer måste det ha tre komponenter anslutna:

  • En Collider-komponent (du behöver inte göra något här; Unitys kub har redan en Box Collider kopplad som standard)
  • Objektmanipulatörskomponent (skript)
  • Constraint Manager-komponent (skript)
  1. När kuben fortfarande är markerad i fönstret Inspector väljer du knappen Lägg till komponent och söker sedan efter och väljer skriptet Object Manipulator.

    Skärmbild av att lägga till skriptet Object Manipulator.

    Skriptet Object Manipulator gör ett objekt flyttbart, skalbart och roterande med en eller två händer. När du lägger till skriptet Object Manipulator läggs även Constraint Manager-skriptet till automatiskt eftersom skriptet Object Manipulator är beroende av det.

    Skärmbild av skriptet Constraint Manager som lagts till i kuben.

Uppdatera kubens material

I prestandasyfte rekommenderar vi att du använder MRTK-material i stället för standardmaterialet för Unity.

  1. När kuben fortfarande är markerad letar du upp och expanderar avsnittet Material på Mesh Renderer-komponenten.
  2. Ersätt standardmaterialet med det MRTK_Standard_White materialet som finns under MRTK Standard Assets>Materials. Du kan göra detta genom att dra materialet direkt till fältet Element i avsnittet Material

Lägg till en andra kub

  1. Högerklicka på kuben i Hierarchyoch välj Duplicera. Den duplicerade kuben visas med namnet Cube (1).

  2. Högerklicka på den ursprungliga kuben, välj Byt namn påoch ge kuben namnet Near Cube.

  3. Högerklicka på den duplicerade kuben, välj Byt namnoch namnge sedan kuben Far Cube.

    Just nu ser det ut som om det bara finns en kub i vyn för Scene. Det beror på att Near Cube och Far Cube är på samma exakta plats. Vi ändrar Far Cubes position och rotation.

  4. När Far Cube fortfarande är markerat ändrar du dess värden i komponenten Transformera till följande:

    Position: X = 0,6, Y = 1,6, Z = 1,1

    Rotation: X = 27, Y = 0, Z = 0

    Nu ska kameran se Near Cube till vänster och Far Cube lite längre bort till höger. Bekräfta detta genom att i Hierarchyväljer du Main Camera (under MRTK XR Rig>Camera Offset) och tittar sedan på fönstret Main Camera i fönstret Scene.

    Skärmbild av vyn för huvudkameran i Scenfönstret.

    Tips

    Om du vill att vyn i fönstret Scene ska se ut ungefär som kameran ser, bläddrar du runt i fönstret Scene. Du kan behöva ställa in kamerans Clear Flags till Skybox om det inte är standardinställningen.

Hämta och flytta kuberna i uppspelningsläge

  1. Välj knappen Spela upp. När projektet börjar spelas upp växlar vyn till fönstret Game.

    Skärmbild av spelfönstret när du har angett Uppspelningsläge.

    Anteckning

    Innan du spelar bekräftar du att det finns en giltig profil anges under Projektinställningar>MRTK3.

  2. Välj knappen tre punkters ovanför det övre högra hörnet i fönstret Game och välj sedan Maximera.

    Skärmbild av kommandot Maximera för spelfönstret.

  3. Tryck och håll ned mellanslagstangenten så att den simulerade högerhanden visas.

  4. Flytta den simulerade handen närmare Near Cube tills den rör kuben på sidan eller undersidan.

    Skärmbild av den simulerade högra handen som rör den Nära-kuben.

  5. Klicka på den vänstra musknappen (detta gör att handen "hämtar" kuben) och dra sedan kuben runt scenen.

    Skärmbild av Flytta kuben.

    För att hämta och flytta Far Cube använder vi den bortre pekaren som är kopplad till den simulerade handen.

  6. Om du behöver trycker du på och håller ned blankstegsfältet igen för att få den simulerade högra handen att visas. Observera den långa pekare som sträcker sig från änden på handens pekfinger.

    Skärmbild av den simulerade handens långpekare.

  7. Flytta handen närmare Far Cube tills du kan se spetsen på pekaren på kuben. Du kan behöva flytta runt handen i en cirkelrörelse några gånger för att få pekarspetsen att visas på kuben.

    Skärmbild av den bortre pekaren som rör kuben.

  8. Klicka på den vänstra musknappen (detta gör att handen stängs, tar på vad vi kallar "nypgesten"), och dra sedan kuben runt scenen.