Ćwiczenie — dodawanie interakcji przy użyciu skryptu objectmanipulator

Ukończone

Skrypt ObjectManipulator obsługuje modalność bezpośredniej manipulacji modelu wejściowego rąk i kontrolerów ruchu. Gdy skrypt jest dołączony do obiektu, użytkownik może przenosić, skalować lub obracać obiekt rękami. W tym ćwiczeniu utworzysz dwa moduły, dołączysz do nich niezbędne skrypty, a następnie przeniesiesz moduły.

Dodawanie i dostosowywanie pierwszego modułu

  1. Na pasku menu wybierz pozycję GameObject>3D Object>Cube.

    Screenshot of menu commands for adding the cube.

    Domyślny rozmiar modułu to jeden metr sześcienny, który jest zbyt duży dla naszych celów. Przeskalujemy rozmiar w dół do 20 centymetrów sześciennych.

  2. Wybierz moduł, a następnie w inspektorze zmień wartości skalowaniamodułu w sekcji Przekształć na następujące:

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

    Moduł został umieszczony w scenie w domyślnej pozycji (0,0,0). Oznacza to, że moduł znajduje się w tej samej pozycji co zestaw słuchawkowy użytkownika, a użytkownik nie będzie mógł zobaczyć modułu, dopóki nie przejdzie do tyłu. Zmienimy wartości pozycji modułu, aby była w lepszej lokalizacji do wyświetlania.

  3. W inspektorze zmień wartości pozycji modułu w sekcji Przekształć na następujące:

    X = -0.2, Y = 1.6, Z = 0.5

    Screenshot of the cube's transform component after updates.

    Chcemy zobaczyć trzy boki modułu, więc zmienimy też rotację sześcianu.

  4. W inspektorze zmień wartości rotacji modułu w wartościach sekcji Przekształć na następujące:

    X = 9, Y = 14, Z = 0

    Napiwek

    Aby powiększyć moduł, zaznacz go, upewnij się, że kursor znajduje się nad oknem Scena i naciśnij klawisz F . W ten sposób można powiększyć dowolny obiekt.

Dodawanie skryptów do modułu

Aby obiekt był "chwytany" za pomocą śledzonych rąk, musi mieć dołączone trzy składniki:

  • Składnik zderzaka (nie musisz nic robić tutaj; Moduł aparatu Unity ma już domyślnie dołączony zderzacz Box Collider)
  • Składnik Manipulator obiektów (skrypt)
  • Składnik Constraint Manager (skrypt)
  1. Po wybraniu modułu w oknie Inspector (Inspektor) wybierz przycisk Add Component (Dodaj składnik), a następnie wyszukaj i wybierz skrypt Object Manipulator (Manipulator obiektów).

    Screenshot of adding the Object Manipulator script.

    Skrypt manipulatora obiektów sprawia, że obiekt jest wymienny, skalowalny i obracany za pomocą jednej lub dwóch rąk. Po dodaniu skryptu Object Manipulator skrypt programu Constraint Manager jest automatycznie dodawany, ponieważ skrypt manipulatora obiektów zależy od niego.

    Screenshot of the Constraint Manager script added to the cube.

Aktualizowanie materiału modułu

W celach wydajności zalecamy używanie materiałów MRTK zamiast domyślnych materiałów aparatu Unity.

  1. Po wybraniu modułu znajdź i rozwiń sekcję Materiały w składniku modułu renderowania siatki.
  2. Zastąp materiał domyślny materiałem MRTK_Standard_White znajdującym się w obszarze MRTK Standard Assets Materials>. Można to zrobić, przeciągając materiał bezpośrednio do pola Element w sekcji Materiały

Dodawanie drugiego modułu

  1. W hierarchii kliknij prawym przyciskiem myszy moduł i wybierz polecenie Duplikuj. Zostanie wyświetlony zduplikowany moduł o nazwie Cube (1).

  2. Kliknij prawym przyciskiem myszy oryginalny moduł, wybierz polecenie Zmień nazwę i nadaj modułowi nazwę Near Cube.

  3. Kliknij prawym przyciskiem myszy zduplikowany moduł, wybierz polecenie Zmień nazwę, a następnie nadaj modułowi nazwę Far Cube.

    W tej chwili wygląda na to, że w widoku sceny znajduje się tylko jeden moduł. To dlatego, że w pobliżu sześcianu i far cube znajdują się dokładnie w tym samym miejscu. Zmieńmy pozycję i rotację Far Cube.

  4. Po wybraniu opcji Far Cube zmień wartości w składniku Transform na następujące:

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

    Obrót: X = 27, Y = 0, Z = 0

    Teraz aparat powinien zobaczyć Near Cube po lewej stronie i Far Cube nieco dalej po prawej stronie. Aby to potwierdzić, w hierarchii wybierz pozycję Main Aparat (w obszarze MRTK XR Rig> Aparat Offset), a następnie przejrzyj okno Główne Aparat w oknie Scena.

    Screenshot of the Main Camera view in the Scene window.

    Napiwek

    Jeśli chcesz, aby widok w oknie Scena wyglądał bardziej podobnie do tego, co widzi aparat, przewiń w oknie Scena. Może być konieczne ustawienie flag Clear Flags aparatu na Skybox, jeśli nie jest domyślnie.

Chwytanie i przenoszenie modułów w trybie odtwarzania

  1. Wybierz przycisk Odtwórz. Po rozpoczęciu odtwarzania projektu widok przełącza się do okna Gra .

    Screenshot of the Game window after entering Play mode.

    Uwaga

    Przed rozpoczęciem odtwarzania upewnij się, że w obszarze Project Ustawienia> MRTK3 istnieje prawidłowy zestaw profilów.

  2. Wybierz przycisk z trzema kropkami powyżej prawego górnego rogu okna Gry , a następnie wybierz pozycję Maksymalizuj.

    Screenshot of Maximize command for the Game window.

  3. Naciśnij i przytrzymaj pasek spacji, aby wyświetlić symulowaną prawą rękę w widoku.

  4. Przenieś symulowaną rękę bliżej modułu Bliskiego sześcianu, aż dotknie sześcianu po stronie lub dolnej.

    Screenshot of the simulated right hand touching the Near Cube.

  5. Kliknij lewy przycisk myszy (powoduje to, że ręka "chwycić" sześcian), a następnie przeciągnij sześcian wokół sceny.

    Screenshot of Move the cube.

    Aby chwycić i przenieść Far Cube, użyjemy wskaźnika dalekiego dołączonego do symulowanej ręki.

  6. Jeśli chcesz, naciśnij i przytrzymaj ponownie pasek spacji, aby wyświetlić symulowaną prawą rękę. Zwróć uwagę na wskaźnik daleko, który rozciąga się od końca palca indeksu dłoni.

    Screenshot of simulated hand's far pointer.

  7. Przesuń rękę bliżej far cube, aż zobaczysz końcówkę wskaźnika na sześcianie. Może być konieczne przeniesienie ręki w ruchu okrągłym kilka razy, aby na wierzchołku wskaźnika pojawić się w sześcianie.

    Screenshot of the far pointer touching the cube.

  8. Kliknij lewy przycisk myszy (sprawia to, że ręka jest zamknięta, biorąc pod uwagę to, co nazywamy "gestem szczypta"), a następnie przeciągnij sześcian wokół sceny.