Ćwiczenie — dodanie interakcji ręcznej z obiektem manipulacyjnym
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ę
Na pasku menu wybierz pozycję GameObject>Obiekt 3D>Sześcian.
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.
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.
W inspektorazmień wartości pozycji modułu w sekcji Przekształć na następujące:
X = -0.2, Y = 1.6, Z = 0.5
Chcemy zobaczyć trzy boki modułu, więc zmienimy też rotację sześcianu.
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)
Po wybraniu wciąż wybranego sześcianu w oknie inspektora wybierz przycisk Dodaj komponent, a następnie wyszukaj i wybierz skrypt Object Manipulator.
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.
Aktualizowanie materiału kostki
W celach wydajności zalecamy używanie materiałów MRTK zamiast domyślnych materiałów Unity.
- Po wybraniu kostki znajdź i rozwiń sekcję Materials w komponencie Mesh Renderer.
- 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ę
W hierarchii kliknij prawym przyciskiem myszy kostkę i wybierz pozycję Duplikuj. Zostanie wyświetlony zduplikowany moduł o nazwie Cube (1).
Kliknij prawym przyciskiem myszy oryginalną kostkę, wybierz pozycję Zmień nazwęi nadaj kostce nazwę Near Cube.
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.
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.
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
Wybierz przycisk Odtwórz. Po rozpoczęciu odtwarzania projektu widok przechodzi do okna Game.
Notatka
Przed rozpoczęciem gry upewnij się, że istnieje prawidłowy profil ustawiony w obszarze Ustawienia projektu>MRTK3.
Wybierz przycisk z trzema kropkami nad prawym górnym rogiem okna gry, a następnie wybierz pozycję Maksymalizuj.
Naciśnij i przytrzymaj pasek spacji, aby wyświetlić symulowaną prawą rękę w widoku.
Przenieś symulowaną rękę bliżej Bliskiego sześcianu, aż dotknie sześcianu z boku lub od dołu.
Kliknij lewy przycisk myszy (powoduje to, że ręka "chwyta" sześcian), a następnie przeciągnij sześcian po scenie.
Aby chwycić i przenieść Far Cube, użyjemy wskaźnika dalekiego dołączonego do symulowanej ręki.
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.
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.
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.