Övning – Skapa intelligenta objektplaceringar med lösare

Slutförd

Lösare är en av komponenterna i Mixed Reality Toolkit (MRTK). Låt oss ta en titt på två typer av lösare och deras respektive funktioner.

Plats för lösare i MRTK

MRTK:s lösare finns i mappen MRTK SDK. Om du vill se tillgängliga lösare i projektet går du till Paket>MRTK Spatial Manipulation>Solvers i projektfönstret.

Screenshot that shows the location of the solvers folder.

Lösningslösaren för riktningsindikator

Använd lösningslösaren För riktningsindikator för att dirigera användaren till objekt. Så här gör du:

  1. I fönstret Projekt går du till Tillgångar>MRTK. Tutorials.GettingStarted>Prefabs. Dra Chevron-prefab till hierarkifönstret och ange dess transformeringsposition till X = 0, Y = 1,5, Z = 2 för att placera den nära RoverExplorer-objektet.

    Screenshot that shows the newly added Chevron prefab selected.

  2. Byt namn på det nyligen tillagda Chevron-objektet till Indikator. I fönstret Inspector väljer du Sedan Lägg till komponent för att lägga till DirectionalIndicator.

    Screenshot that shows the DirectionalIndicator solver component added.

  3. Konfigurera komponenterna DirectionalIndicator och SolverHandler på följande sätt:

    a. Kontrollera att SolverHandler-komponentens spårade måltyp är inställd på Huvud.

    b. Tilldela RoverExplorer till DirectionalIndicator-komponentens riktningsmål genom att dra den från hierarkin till fältet Ingen (transformering).

    c. Ändra visningsförskjutning till 0,2.

    Screenshot that shows the DirectionalIndicator solver component configured.

  4. Tryck på Spela om du vill ange spelläge. Tryck och håll den högra musknappen medan du flyttar musen till vänster eller höger för att rotera blickriktningen.

    Observera att när du tittar bort från RoverExplorer-objektet visas indikatorobjektet och pekar mot RoverExplorer-objektet.

    Screenshot that shows the Play mode split view with DirectionalIndicator solver in use.

Lösen för att trycka på plats

Använd lösningslösningen Tryck för att placera om objekt. Så här gör du:

  1. I hierarkifönstret väljer du RoverExplorer>RoverAssembly-objektet. I Inspector använder du sedan Lägg till komponent för att lägga till komponenten Tryck på plats. Konfigurera komponenten på följande sätt:

    a. Kontrollera att SolverHandler-komponentens spårade måltyp är inställd på Huvud.

    b. Avmarkera Använd standard surface normal offset och kontrollera att Surface Normal Offset är inställt på 0.

    c. Markera kryssrutan Behåll lodrät orientering.

    Screenshot that shows the Tap To Place solver component added and configured.

  2. Använd sedan Lägg till komponent för att lägga till komponenten Stateful Interactable. Leta reda på händelsen På klickad () i fönstret Kontroll. + Välj ikonen för att lägga till en ny händelse. Konfigurera händelsen enligt följande:

    a. Tilldela RoverAssembly-objektet som lyssnare för händelsen Klickad () genom att dra det från hierarkin till fältet Inget (objekt).

    b. I listrutan Ingen funktion väljer du TapToPlace>StartPlacement() för att anropa den här metoden när händelsen utlöses.

    Screenshot that shows the Tap To Place On Placing Started event configured.

  3. Med RoverAssembly-objektet fortfarande markerat i hierarkifönstret letar du upp händelsen Vid placering startad () i fönstret Kontroll. + Välj ikonen för att lägga till en ny händelse.

    Screenshot that shows the Tap To Place On Placing Started event added.

  4. Konfigurera händelsen enligt följande:

    a. Tilldela RoverAssembly-objektet som lyssnare för händelsen Startad () vid placering genom att dra det från hierarkin till fältet Ingen (objekt).

    b. I listrutan Ingen funktion väljer du TapToPlace>float SurfaceNormalOffset för att uppdatera egenskapsvärdet SurfaceNormalOffset när händelsen utlöses.

    c. Kontrollera att argumentet är inställt på 0.

    Screenshot that shows the Tap To Place On Placing Started event configured.

  5. Högerklicka på en tom plats i Hierarki. Välj 3D-objektkub>för att skapa ett tillfälligt objekt som representerar marken och konfigurera transformeringskomponenten på följande sätt:

    • Position: X = 0, Y = 0,15, Z = 6
    • Rotation: X = 0, Y = 0, Z = 0
    • Skala: X = 10, Y = 0,2, Z = 10

    Screenshot that shows the temporary ground Cube object added and positioned.

  6. Tryck på Spela om du vill ange spelläge. Tryck sedan på och håll den högra musknappen medan du flyttar musen nedåt tills blicken träffar RoverAssembly-objektet .

    Screenshot that shows the Play mode split view, with gaze hitting the RoverAssembly object.

  7. Håll blankstegsfältet och klicka på den vänstra musknappen för att göra en lufttryckning och starta tryck-till-plats-processen.

    Screenshot that shows the Play mode split view, with placing started.

  8. Tryck och håll den högra musknappen medan du flyttar musen till vänster eller höger för att rotera blickriktningen. När du är nöjd med placeringen håller du blankstegsfältet och klickar på den vänstra musknappen för att göra ett avslutande lufttryck.

    Screenshot that shows the Play mode split view, with placing ended.

  9. När du är klar med att testa funktionen i spelläge högerklickar du på kubobjektet och väljer Ta bort för att ta bort den från scenen.

    Screenshot that shows how to delete the temporary ground Cube.