Oefening: 3D-objecten manipuleren met behulp van besturingselement voor grenzen

Voltooid

Het ObjectManipulator-script maakt een object beweegbaar, schaalbaar en draaibaar met één of twee handen. Dit script ondersteunt het invoermodel voor directe manipulatie, omdat de gebruiker hologrammen rechtstreeks met hun handen kan aanraken. Gebruik Hier ObjectManipulator om handinteracties mogelijk te maken, zodat u de roververkenner kunt verplaatsen, schalen en draaien.

  1. Daarnaast configureert u de Rover Explorer, zodat u de roveronderdelen op de Rover kunt plaatsen om deze een complete rover-assembly te maken. Vouw in het deelvenster Hierarchy het RoverExplorer >RoverParts-object uit en selecteer alle onderliggende roveronderdelenobjecten en het RoverAssembly-object . Gebruik vervolgens in het deelvenster Inspector de knop Component toevoegen om de volgende onderdelen toe te voegen aan alle geselecteerde objecten:

    • Object Manipulator (Script) onderdeel
    • NearInteractionGrabbable component
    • Onderdeel assemblycontroller (script)

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

  2. Wanneer alle roveronderdelenobjecten en het RoverAssembly-object nog steeds zijn geselecteerd, configureert u het onderdeel Object Manipulator (Script) als volgt in het deelvenster Inspector:

    • Schakel in de vervolgkeuzelijst Tweehandige manipulatietypen het selectievakje Schaal uit, zodat alleen Verplaatsen en Draaien is ingeschakeld:

    Screenshot of Unity with Two Handed Manipulation Type configured.

  3. Navigeer in het deelvenster Project naar de map PackagesMixed Reality Toolkit Standard AssetsAudio> om de audioclips > te zoeken:

    Screenshot of Unity Project window with Audio folder selected.

  4. Selecteer in het deelvenster Hiërarchie alle roveronderdeelobjecten opnieuw en selecteer vervolgens in het deelvenster Inspector onderdeel toevoegen om het onderdeel Audiobronnen toe te voegen en configureer het als volgt:

    • De MRTK_Scale_Start audioclip toewijzen aan het veld AudioClip
    • Schakel het selectievakje Play On Awake uit
    • Ruimtelijke overvloeiing wijzigen in 1

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

  5. Vouw in het deelvenster Hierarchy het RoverAssembly-RoverModel_PlacementHints_XRay >Parts_PlacementHints> object uit om alle plaatsingstipobjecten weer te geven, selecteer vervolgens het eerste roveronderdeel, RoverParts >Camera_Part en configureer het onderdeel Part Assembly Controller (Script) als volgt:

    • Het Camera_PlacementHint-object toewijzen aan het veld Locatie naar locatie

    Screenshot of Unity with Camera_Part PartAssemblyController component configured.

  6. Herhaal stap 5 voor elk van de resterende roveronderdelenobjecten en het RoverAssembly-object om het onderdeel Part Assembly Controller (Script) als volgt te configureren:

    • Wijs voor de Generator_Part het Generator_PlacementHint-object toe aan het veld Locatie-naar-locatie
    • Wijs voor de Lights_Part het Lights_PlacementHint-object toe aan het veld Locatie om te plaatsen
    • Wijs voor de UHFAntenna_Part het UHFAntenna_PlacementHint-object toe aan het veld Locatie-naar-locatie
    • Wijs voor de Spectrometer_Part het Spectrometer_PlacementHint-object toe aan het veld Locatie naar locatie
    • Wijs voor de RoverAssembly het object zelf toe, dat wil gezegd, hetzelfde RoverAssembly-object, aan het veld Locatie-naar-plaats
  7. Selecteer in het deelvenster Hierarchy het knopobject RoverExplorer > Buttons >Reset en configureer vervolgens in het deelvenster Inspector de gebeurtenis Interactable OnClick () als volgt:

    • Wijs het RoverAssembly-object toe aan het veld Geen (Object)
    • Selecteer PartAssemblyControllerResetPlacement>() in de vervolgkeuzelijst Geen functie om deze functie in te stellen als de actie die moet worden uitgevoerd wanneer de gebeurtenis wordt geactiveerd

    Screenshot of Unity with Reset button object OnClick event configured.

  8. Als je nu in gamemodus komt, kun je bijna of ver interactie gebruiken om de roveronderdelen op de Rover te plaatsen. Zodra het deel zich dicht bij de bijbehorende plaatsingstip bevindt, wordt het vastgelijnd en wordt het onderdeel onderdeel van de Rover. Als u de plaatsingen opnieuw wilt instellen, drukt u op de knop Opnieuw instellen:

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

Besturingselement Begrenzes toevoegen

  1. Selecteer in het venster Hierarchy het RoverExplorer-object en gebruik vervolgens in het venster Inspector de knop Component toevoegen om de volgende onderdelen toe te voegen:

    • Component BoundsControl
    • Object Manipulator (Script)onderdeel Schakel vervolgens het selectievakje naast alle onderdelen uit om ze standaard uitgeschakeld te maken:

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

  2. Vouw in het deelvenster Hiërarchie het Menu >ButtonCollection-object uit om de vier knoppen weer te geven, wijzig de naam van de derde knop in BoundsControl_Enable en configureer vervolgens in het deelvenster Inspector het onderdeel Knopconfiguratiehulp (Script) als volgt:

    • De hoofdlabeltekst wijzigen in Inschakelen
    • Wijs het RoverExplorer-object toe aan het veld None (Object)
    • Selecteer In de vervolgkeuzelijst Geen functie de optie BoundsControlbool>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd
    • Controleer of het selectievakje voor argumenten is ingeschakeld
    • Selecteer het kleine + pictogram om een andere gebeurtenis toe te voegen
    • Wijs het RoverExplorer-object toe aan het veld None (Object)
    • Selecteer In de vervolgkeuzelijst Geen functieObjectManipulatorbool>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd
    • Controleer of het selectievakje voor argumenten is ingeschakeld
    • Laat het pictogram staan als het pictogram 'kubus met besturingselement voor grenzen'

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

  3. Wijzig de naam van de knop om te BoundsControl_Disable en configureer vervolgens in het deelvenster Inspector het onderdeel Button Config Helper (Script) als volgt:

    • De hoofdlabeltekst wijzigen in Uitschakelen
    • Wijs het RoverExplorer-object toe aan het veld None (Object)
    • Selecteer In de vervolgkeuzelijst Geen functie de optie BoundsControlbool>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd
    • Controleer of het selectievakje voor argumenten is uitgeschakeld
    • Selecteer het kleine + pictogram om een andere gebeurtenis toe te voegen
    • Wijs het RoverExplorer-object toe aan het veld None (Object)
    • Selecteer In de vervolgkeuzelijst Geen functieObjectManipulatorbool>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd
    • Controleer of het selectievakje voor argumenten is uitgeschakeld
    • Wijzig het pictogram in het pictogram Kubus met besturingselement voor grenzen

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

  4. Als u nu de gamemodus opent en Schakel Inschakelen om Besturingselement voor afhankelijkheid in te schakelen selecteert, kunt u bijna of ver interactie gebruiken om besturingselementen te verplaatsen, draaien en schalen. Selecteer Uitschakelen om het besturingselement Voor grenzen opnieuw uit te schakelen:

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