Ćwiczenie — dodanie interakcji ręcznej z obiektem manipulacyjnym

Ukończone

Skrypt ObjectManipulator obsługuje bezpośrednie manipulowanie modalne modelu 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.

Dodaj i dostosuj pierwszą kostkę

  1. Na pasku menu wybierz pozycję GameObject>Obiekt 3D>Sześcian.

    zrzut ekranu przedstawiający polecenia menu służące do dodawania sześcianu.

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

  2. Wybierz sześcian, a następnie w inspektorze zmień wartości Skala sześcianu w sekcji Transformacja na następujące:

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

    Sześcian 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 sześcianu, aby był w lepszej lokalizacji do oglądania.

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

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

    Zrzut ekranu przedstawiający składnik przekształcenia sześcianu po aktualizacjach.

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

  4. W Inspectorzmień wartości Rotation 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ę na okna sceny, a następnie naciśnij F. W ten sposób można powiększyć dowolny obiekt.

Dodaj skrypty do kostki

Aby obiekt był możliwy do chwycenia za pomocą śledzonych rąk, musi mieć dołączone trzy komponenty:

  • Komponent Collider (nie musisz nic robić tutaj; sześcian Unity ma już domyślnie dołączony Box Collider)
  • Składnik (skrypt) Manipulator Obiektów
  • Składnik "Constraint Manager" (skrypt)
  1. Po wybraniu wciąż wybranego sześcianu w oknie inspektora wybierz przycisk Dodaj komponent, a następnie wyszukaj i wybierz skrypt Object Manipulator.

    Zrzut ekranu przedstawiający dodawanie skryptu manipulatora obiektów.

    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.

    Zrzut ekranu przedstawiający skrypt menedżera ograniczeń dodany do modułu.

Aktualizowanie materiału kostki

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

  1. Po wybraniu kostki znajdź i rozwiń sekcję Materials w komponencie Mesh Renderer.
  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 Materials

Dodaj drugą kostkę

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

  2. Kliknij prawym przyciskiem myszy oryginalną kostkę, wybierz pozycję Zmień nazwęi nadaj kostce nazwę Near Cube.

  3. Kliknij prawym przyciskiem myszy zduplikowany moduł, wybierz pozycję 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 sześcian. To dlatego, że Near Cube 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:

    położenie: 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 Main Camera (w obszarze MRTK XR Rig>Camera Offset), a następnie sprawdź okno Main Camera w oknie Scene.

    Zrzut ekranu przedstawiający widok Głównej kamery w oknie Sceny.

    Napiwek

    Jeśli chcesz, aby widok w oknie Scena bardziej przypominał to, co widzi aparat, przewiń w oknie Scena. Może być konieczne ustawienie Clear Flags kamery na Skybox, jeśli nie jest ustawione domyślnie.

Chwytaj i przenoś kostki w trybie gry

  1. Wybierz przycisk Odtwórz. Po rozpoczęciu odtwarzania projektu widok przechodzi do okna Game.

    Zrzut ekranu przedstawiający okno Gry po wprowadzeniu trybu odtwarzania.

    Notatka

    Przed rozpoczęciem gry upewnij się, że istnieje prawidłowy profil ustawiony w obszarze Ustawienia projektu>MRTK3.

  2. Wybierz przycisk z trzema kropkami nad prawym górnym rogiem okna gry, a następnie wybierz pozycję Maksymalizuj.

    zrzut ekranu przedstawiający polecenie Maksymalizuj dla okna Gry.

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

  4. Przenieś symulowaną rękę bliżej Bliskiego sześcianu, aż dotknie sześcianu z boku lub od dołu.

    Zrzut ekranu przedstawiający symulowaną prawą rękę dotykającą sześcianu

  5. Kliknij lewy przycisk myszy (powoduje to, że ręka "chwyta" sześcian), a następnie przeciągnij sześcian po scenie.

    Zrzut ekranu przedstawiający przenoszenie sześcianu.

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

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

    Zrzut ekranu przedstawiający daleki wskaźnik symulowanej ręki.

  7. Przesuń rękę bliżej far cube, aż zobaczysz końcówkę wskaźnika na sześcianie. Może być konieczne poruszanie ręką kilka razy ruchem okrężnym, aby koniec wskaźnika pojawił się na sześcianie.

    Zrzut ekranu przedstawiający wskaźnik daleko dotykający sześcianu.

  8. Kliknij lewy przycisk myszy (to powoduje zamknięcie ręki, przybierając to, co nazywamy "gestem szczypania"), a następnie przeciągnij sześcian po scenie.