Cvičení – manipulace s 3D objekty pomocí ovládacího prvku bounds

Dokončeno

Skript ObjectManipulator umožňuje pohyblivý, škálovatelný a otočný objekt jedním nebo dvěma rukama. Tento skript podporuje vstupní model přímé manipulace, protože umožňuje uživateli kontaktovat hologramy přímo rukama. Tady můžete pomocí ObjectManipulatoru povolit interakce rukou, abyste mohli přesouvat, škálovat a otáčet průzkumníka roverů.

  1. Kromě toho nakonfigurujete Průzkumníka roverů tak, abyste mohli umístit díly roveru na rover, aby bylo možné vytvořit kompletní montáž vozítka. V podokně Hierarchie rozbalte objekt RoverExplorer >RoverParts a vyberte všechny jeho podřízené objekty součástí roveru a objekt RoverAssembly. Poté v podokně Inspektor použijte tlačítko Přidat komponentu a přidejte následující komponenty do všech vybraných objektů:

    • komponenta manipulátoru objektu (script)
    • Kontroler sestavy dílu (skript) součást

    snímek obrazovky RoverAssembly s vybranými a přidanými součástmi všech částí vozítka.

  2. Pokud jsou všechny objekty částí vozítka a objekt RoverAssembly stále vybrané, nakonfigurujte v podokně inspektoru komponentu Object Manipulator (Script) následujícím způsobem:

    • V části Základní nastavení interakcevyhledejte událost Při kliknutí (). Vyberte ikonu + a přidejte novou událost. Událost nakonfigurujte následujícím způsobem:

      a. Přiřaďte objekt RoverAssembly jako posluchač události On Clicked () přetažením z Hierarchy do pole None (Object).

      b. V rozevíracím seznamu Žádná funkce vyberte TapToPlace>StartPlacement(), aby se volala tato metoda při aktivaci události.

    • V rozevíracím seznamu Povolený typ manipulace zrušte zaškrtnutí políčka Měřítko, takže jsou povolené jenom Přesunout a Otočit:

    snímek obrazovky Unity s nakonfigurovaným typem manipulace se dvěma rukama

  3. Vyberte pouze objekt RoverAssembly a odeberte na něm stavovou interagovatelnou komponentu, pokud existuje. Vyberte tři tečky úplně vpravo od komponenty a pak vyberte Odebrat součást.

  4. V podokně Projekt přejděte do složky Packages>MRTK Standard Assets>Audio>HoloLens2 složku a vyhledejte zvukové klipy:

    Snímek obrazovky s oknem Projektu Unity s vybranou složkou Zvuk

  5. V podokně Hierarchie znovu vyberte všechny objekty částí vozítka , poté v podokně inspektoru vyberte možnost Přidat komponentu a přidejte komponentu Zdroje zvuku a nakonfigurujte ji následujícím způsobem:

    • Přiřazení zvukového klipu MRTK_Scale_Start do pole AudioClip
    • Zrušte zaškrtnutí políčka Přehrát při probuzení
    • Změňte Spatial Blend na 1

    snímek obrazovky Unity se všemi vybranými částmi vozítka a s přidanou a nakonfigurovanou komponentou Audio Source.

  6. V hierarchickém podokně rozbalte objekt RoverAssembly > RoverModel_PlacementHints_XRay >Parts_PlacementHints, aby se zobrazily všechny objekty naznačující umístění, pak vyberte první část roveru, RoverParts >Camera_Part, a nakonfigurujte komponentu Part Assembly Controller (Script) následujícím způsobem:

    • Přiřaďte objekt Camera_PlacementHint k poli Lokace pro umístění

    snímek obrazovky Unity s nakonfigurovanou komponentou Camera_Part PartAssemblyController

  7. Opakujte krok 5 pro každý z zbývajících objektů dílu vozítka a objekt RoverAssembly tak, aby konfigurovali součást kontroleru sestavení dílu (Script) následujícím způsobem:

    • Pro Generator_Partpřiřaďte objekt Generator_PlacementHint na pole "Umístění k umístění".
    • Pro Lights_Partpřiřaďte objekt Lights_PlacementHint k poli Místo pro umístění.
    • Pro UHFAntenna_Partpřiřaďte objekt UHFAntenna_PlacementHint k poli Umístění
    • Pro Spectrometer_Partpřiřaďte objekt Spectrometer_PlacementHint poli Umístění na místo.
    • Pro RoverAssemblypřiřaďte objekt samotný, tedy stejný objekt RoverAssembly, do pole Location To Place
  8. V podokně Hierarchie vyberte objekt tlačítka RoverExplorer > Buttons >Reset a pak v podokně inspektoru nakonfigurujte událost PressableButton OnClicked() následujícím způsobem:

    • Přiřazení objektu RoverAssembly k poli None (Object)
    • V rozevíracím seznamu Žádná funkce vyberte PartAssemblyController>ResetPlacement (), aby byla tato funkce nastavena jako akce, která se má spustit při aktivaci události.

    Snímek obrazovky Unity s nakonfigurovanou událostí OnClick pro objekt tlačítka Reset

  9. Pokud nyní vstoupíte do herního režimu, můžete použít blízkou nebo vzdálenou interakci k umístění částí vozítka na rover. Jakmile je část blízko odpovídající nápovědy pro umístění, přichytí se k místu a stane se součástí roveru. Pokud chcete obnovit umístění, můžete stisknout tlačítko Obnovit:

    Snímek obrazovky s rozděleným zobrazením režimu Unity Play a stisknutým tlačítkem Obnovit

Přidání ovládacího prvku ohraničení

  1. V okně Hierarchie vyberte objekt RoverExplorer a pak v okně inspektoru pomocí tlačítka Přidat komponentu přidejte komponentu BoundsControl. zrušte zaškrtnutí zaškrtávacího políčka vedle komponenty, aby bylo ve výchozím nastavení neaktivní:

    snímek obrazovky Unity s vybraným objektem RoverExplorer a přidanými i zakázanými komponenty

  2. V okně Projektu přejděte do složky Packages>MRTK Spatial Manipulation>BoundsControl>Prefabs, klikněte a přetáhněte prefab BoundingBoxWithHandles do pole Bounds Visuals Prefab komponenty Bounds Control.

    snímek obrazovky Unity s vybraným objektem RoverExplorer a nakonfigurovaným polem Prefab vizuálů Bounds

  3. V podokně Hierarchie rozbalte položku Nabídka >Buttons-GridLayout (tlačítka) objekt, aby se zobrazila tři tlačítka, přejmenujte třetí tlačítko na BoundsControl_Enablea potom v okně Hierarchie nakonfigurujte herní objekt BoundsControl_Enable následujícím způsobem:

    • Vyberte objekt Přední panel > Animovaný obsah > Ikona > Štítek a změňte komponentu TextMeshPro na Povolit. Ujistěte se, že je v hierarchii aktivovaný objekt Label.
    • Nakonfigurujte událost PressableButton.OnClicked() přiřazením objektu RoverExplorer k poli None (Object) a výběrem BoundsControl>bool Enabled z rozevíracího seznamu No Function (ověřte, zda je zaškrtávací políčko argumentu zaškrtnuté)
    • Pokud chcete přidat další událost, vyberte malou ikonu +.
    • Přiřaďte objekt RoverExplorer poli None (Object)
    • V rozevíracím seznamu Žádná funkce vyberte ObjectManipulator>bool Enabled, abyste aktualizovali tuto hodnotu vlastnosti při aktivaci události, a ověřte, že je zaškrtávací políčko argumentu zaškrtnuté.
    • Pokud chcete přidat další událost, vyberte malou ikonu +.
    • Přiřaďte objekt RoverExplorer poli None (Object)
    • V rozevíracím seznamu Žádná funkce vyberte BoundsControl>bool HandlesActive, abyste aktualizovali tuto hodnotu vlastnosti, když je událost aktivována, a ověřte, že je zaškrtávací políčko argumentu zaškrtnuté
    • Vyberte objekt Frontplate > AnimatedContent > Ikona > UIButtonFontIcon a změňte Ikonu na symbol čtyř šipek v komponentě Výběr ikony písma. Najdete ho v seznamu ikon nebo můžete nastavit ** Název aktuální ikony** na Ikonu 40.

    Snímek obrazovky Unity s vybraným objektem tlačítka BoundsControl_Enable a nakonfigurovanou součástí Pomocník konfigurace tlačítka

  4. Duplikujte tlačítko BoundsControl_Enable a přejmenujte ho na BoundsControl_Disable, a potom v podokně inspektoru nakonfigurujte komponentu Pomocník konfigurace tlačítka (skript) následujícím způsobem:

    • Vyberte objekt Frontplate > AnimatedContent > Ikona > Popisek a změňte komponentu TextMeshPro na Disable
    • Nakonfigurujte událost PressableButton.OnClicked() tak, že zkontrolujete, že jsou všechna zaškrtávací políčka v událostech nezaškrtnutá

    Snímek obrazovky Unity s vybraným objektem tlačítka BoundsControl_Disable a nakonfigurovanou komponentou Pomocník pro konfiguraci tlačítka

  5. Pokud nyní přejdete do herního režimu a vyberete Povolit pro aktivaci ovládacího prvku Bounds Control, můžete pomocí blízké nebo vzdálené interakce přesouvat, otáčet a měnit velikost ovládacího prvku Bounds Control. Poté vyberte Zakázat k jeho opětovnému vypnutí.

    snímek obrazovky rozděleného zobrazení režimu Unity Play, kde se provádí manipulace s ovládáním hranic.