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

Dokončeno

ObjectManipulator je skript, který umožňuje přesouvat objekt, otáčet jím a měnit jeho velikost jednou rukou nebo obě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 a objekt RoverAssembly a pak v podokně inspektoru pomocí tlačítka Přidat součást přidejte do všech vybraných objektů následující součásti:

    • Komponenta Object Manipulator (Script)
    • Součást kontroleru sestavení části (skript)

    Screenshot of RoverAssembly with all rover part objects selected and components added.

  2. Pokud jsou všechny objekty dílu 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í interagovatelná Nastavení vyhledejte událost Při kliknutí (). + Výběrem ikony přidejte novou událost. Událost nakonfigurujte následujícím způsobem:

      a. Přiřaďte objekt RoverAssembly jako naslouchací proces události Při kliknutí () přetažením z hierarchie do pole None (Object).

      b. V rozevíracím seznamu Žádná funkce vyberte TapToPlace>StartPlacement() pro volání této metody při aktivaci události.

    • V rozevíracím seznamu Povolené typy manipulace zrušte zaškrtnutí políčka Měřítko, takže jsou povoleny pouze možnosti Přesunout a Otočit :

    Screenshot of Unity with Two Handed Manipulation Type configured.

  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 komponentu.

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

    Screenshot of Unity Project window with Audio folder selected.

  5. V podokně Hierarchie znovu vyberte všechny objekty částí vozítka a pak v podokně inspektoru vyberte Přidat komponentu pro přidání komponenty Zdroje zvuku a nakonfigurujte ji následujícím způsobem:

    • Přiřazení zvukového klipu MRTK_Scale_Start poli AudioClip
    • Zrušení zaškrtnutí políčka Přehrát vzhůru
    • Změna prostorového mixu na 1

    Screenshot of Unity with all rover parts selected and Audio Source component added and configured.

  6. V podokně Hierarchie rozbalte objekt RoverAssembly > RoverModel_PlacementHints_XRay> Parts_PlacementHints, aby se zobrazily všechny objekty nápovědy pro umístění, pak vyberte první část roveru, RoverParts> Kamera_Part a nakonfigurujte komponentu Kontroleru sestavení částí (Script) následujícím způsobem:

    • Přiřazení objektu Kamera_PlacementHint k poli Umístění na místo

    Screenshot of Unity with Camera_Part PartAssemblyController component configured.

  7. Opakujte krok 5 pro všechny zbývající objekty dílu vozítka a objekt RoverAssembly a nakonfigurujte komponentu Kontroleru sestavení dílu (script ) následujícím způsobem:

    • Pro Generator_Part přiřaďte objekt Generator_PlacementHint poli Umístění na místo.
    • Pro Lights_Part přiřaďte objekt Lights_PlacementHint poli Umístění na místo.
    • Pro UHFAntenna_Part přiřaďte objekt UHFAntenna_PlacementHint poli Umístění na místo.
    • Pro Spectrometer_Part přiřaďte objekt Spectrometer_PlacementHint poli Umístění na místo.
    • V případě RoverAssembly přiřaďte objekt samotný, tedy stejný objekt RoverAssembly, do pole Umístění na místo.
  8. V podokně Hierarchie vyberte objekt tlačítka RoverExplorer >>Reset, 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 () a nastavte tuto funkci jako akci, která se má spustit při aktivaci události.

    Screenshot of Unity with Reset button object OnClick event configured.

  9. Pokud nyní přejdete do herního režimu, můžete použít téměř nebo dalekou interakci k umístění částí roveru do roveru. 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:

    Screenshot of Unity Play mode split view with Reset button being pressed.

Přidání ovládacího prvku bounds

  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í políčka vedle komponenty a ve výchozím nastavení ho zakažte :

    Screenshot of Unity with RoverExplorer object selected and components added and disabled.

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

    Screenshot of Unity with RoverExplorer object selected and the Bounds Visuals Prefab field configured.

  3. V podokně Hierarchie rozbalte >objekt Menu Buttons-GridLayout (Tlačítka) a zobrazte tři tlačítka, přejmenujte třetí tlačítko na BoundsControl_Enable a potom v okně Hierarchie nakonfigurujte herní objekt BoundsControl_Enable následujícím způsobem:

    • Vyberte objekt Popisek ikony > Frontplate > AnimatedContent > a změňte komponentu TextMeshPro na Enable. Ujistěte se, že je v hierarchii aktivovaný objekt Label.
    • Nakonfigurujte událost PressableButton.OnClicked() přiřazením objektu RoverExplorer do pole None (Object) a výběrem hodnoty BoundsControl>bool Enabled z rozevíracího seznamu Bez funkce (ověřte, zda je zaškrtnuté políčko argumentu).
    • Vyberte malou + ikonu pro přidání další události.
    • Přiřazení objektu RoverExplorer do pole None (Object)
    • V rozevíracím seznamu Žádná funkce vyberte ObjectManipulator>bool Enabled, chcete-li aktualizovat tuto hodnotu vlastnosti při aktivaci události a ověřit, zda je zaškrtnuté políčko argumentu.
    • Vyberte malou + ikonu pro přidání další události.
    • Přiřazení objektu RoverExplorer do pole None (Object)
    • V rozevíracím seznamu Žádná funkce vyberte BoundsControl>bool HandlesActive a aktualizujte tuto hodnotu vlastnosti při aktivaci události a ověřte, zda je zaškrtnuté políčko argumentu.
    • Vyberte objekt UIButtonFontIcon ikony Frontplate > AnimatedCon >> a změňte ikonu Ikona na čtyři šipky 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.

    Screenshot of Unity with BoundsControl_Enable button object selected and Button Config Helper component configured.

  4. Duplikujte tlačítko BoundsControl_Enable a přejmenujte ho na BoundsControl_Disable a potom v podokně inspektoru nakonfigurujte komponentu Pomocné rutiny konfigurace tlačítka (skript):

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

    Screenshot of Unity with BoundsControl_Disable button object selected and Button Config Helper component configured.

  5. Pokud teď přejdete do herního režimu a vyberete Povolit , chcete-li ovládací prvek Bounds Control povolit, můžete pomocí téměř nebo daleko interakce přesouvat, otáčet a měnit měřítko ovládacího prvku a vybrat Zakázat , aby se ovládací prvek Bounds znovu zakázal:

    Screenshot of Unity Play mode split view with Bounds Control being manipulated.