Delen via


HoloLens (1e generatie) Basics 101: Complete project with device


Belangrijk

De Mixed Reality Academy-zelfstudies zijn ontworpen met HoloLens (1e generatie), Unity 2017 en Mixed Reality Immersive Headsets in het achterhoofd. Daarom vinden we het belangrijk om deze zelfstudies te laten staan voor ontwikkelaars die nog steeds op zoek zijn naar richtlijnen bij het ontwikkelen van deze apparaten. Deze zelfstudies worden niet bijgewerkt met de nieuwste toolsets of interacties die worden gebruikt voor HoloLens 2 en zijn mogelijk niet compatibel met nieuwere versies van Unity. Ze worden onderhouden om te blijven werken op de ondersteunde apparaten. Er is een nieuwe reeks zelfstudies gepubliceerd voor HoloLens 2.


Deze zelfstudie begeleidt u door een compleet project, gebouwd in Unity, waarin de belangrijkste Windows Mixed Reality functies op HoloLens worden gedemonstreerd, zoals staren, gebaren, spraakinvoer, ruimtelijk geluid en ruimtelijke toewijzing.

De zelfstudie duurt ongeveer 1 uur.

Ondersteuning voor apparaten

Cursus HoloLens Immersive headsets
MR Basics 101: Project voltooien met apparaat ✔️

Voordat u begint

Vereisten

Projectbestanden

  • Download de bestanden die zijn vereist voor het project. Vereist Unity 2017.2 of hoger.
    • Als u nog steeds ondersteuning voor Unity 5.6 nodig hebt, gebruikt u deze release.
    • Als u nog steeds ondersteuning voor Unity 5.5 nodig hebt, gebruikt u deze release.
    • Als u nog steeds ondersteuning voor Unity 5.4 nodig hebt, gebruikt u deze release.
  • Maak het archiveren van de bestanden op uw bureaublad of een andere gemakkelijk te bereiken locatie ongedaan. Behoud de naam van de map als Origami.

Notitie

Als u de broncode wilt bekijken voordat u deze downloadt, is deze beschikbaar op GitHub.

Hoofdstuk 1 - "Holo" wereld

In dit hoofdstuk stellen we ons eerste Unity-project in en doorlopen we het proces voor bouwen en implementeren.

Doelen

  • Stel Unity in voor holografische ontwikkeling.
  • Maak een hologram.
  • Bekijk een hologram dat u hebt gemaakt.

Instructies

  • Start Unity.
  • Selecteer Openen.
  • Voer de locatie in als de Origami-map die u eerder ongedaan hebt gemaakt.
  • Selecteer Origami en klik op Map selecteren.
  • Aangezien het Origami-project geen scène bevat, slaat u de lege standaardscène op in een nieuw bestand met behulp van: Bestand / Scène opslaan als.
  • Geef de nieuwe scène de naam Origami en druk op de knop Opslaan .

De virtuele hoofdcamera instellen

  • Selecteer in het Hierarchy Panel de optie Main Camera.
  • Stel in inspector de transformatiepositie in op 0,0,0.
  • Zoek de eigenschap Markeringen wissen en wijzig de vervolgkeuzelijst van Skybox in Effen kleur.
  • Klik op het veld Background om een kleurenkiezer te openen.
  • Stel R, G, B en A in op 0.

De scène instellen

  • Klik in het deelvenster Hiërarchie op Maken en Leeg maken.
  • Klik met de rechtermuisknop op het nieuwe GameObject en selecteer Naam wijzigen. Wijzig de naam van het GameObject in OrigamiCollection.
  • Vanuit de map Hologrammen in het deelvenster Project (vouw Assets uit en selecteer Hologrammen of dubbelklik op de map Hologrammen in het deelvenster Project):
    • Sleep Stage naar de hiërarchie als onderliggend element van OrigamiCollection.
    • Sleep Sphere1 naar de hiërarchie als onderliggend element van OrigamiCollection.
    • Sleep Sphere2 naar de hiërarchie als onderliggend element van OrigamiCollection.
  • Klik met de rechtermuisknop op het object Directional Light in het deelvenster Hiërarchie en selecteer Verwijderen.
  • Sleep Lights vanuit de map Hologrammen naar de hoofdmap van het deelvenster Hiërarchie.
  • Selecteer in de hiërarchie de OrigamiCollection.
  • Stel in inspector de transformatiepositie in op 0, -0,5, 2,0.
  • Druk op de knop Afspelen in Unity om een voorbeeld van uw hologrammen te bekijken.
  • U ziet nu de Origami-objecten in het voorbeeldvenster.
  • Druk nogmaals op Afspelen om de voorbeeldmodus te stoppen.

Het project exporteren van Unity naar Visual Studio

  • Selecteer in Unity Instellingen voor bestandsbuild>.

  • Selecteer Universeel Windows-platform in de lijst Platform en klik op Ander platform.

  • Stel SDK in op Universal 10 en BuildType op D3D.

  • Controleer Unity C#-projecten.

  • Klik op Open scènes toevoegen om de scène toe te voegen.

  • Klik op Bouwen.

  • Maak in het venster verkenner dat wordt weergegeven een nieuwe map met de naam 'App'.

  • Klik één klik op de map App.

  • Druk op Map selecteren.

  • Wanneer Unity klaar is, wordt een Bestandenverkenner venster weergegeven.

  • Open de map App .

  • Open (dubbelklik) Origami.sln.

  • Gebruik de bovenste werkbalk in Visual Studio om het doel te wijzigen van Foutopsporing in Release en van ARM in X86.

  • Klik op de pijl naast de knop Apparaat en selecteer Externe machine om te implementeren via Wi-Fi.

    • Stel het adres in op de naam of het IP-adres van uw HoloLens. Als u het IP-adres van uw apparaat niet weet, kijkt u in Instellingen > Netwerk & Geavanceerde opties voor internet > of vraagt u Cortana 'Hey Cortana, What's my IP address?'
    • Als de HoloLens is aangesloten via USB, kunt u in plaats daarvan Apparaat selecteren om via USB te implementeren.
    • Laat verificatiemodus ingesteld op Universeel.
    • Klik op Selecteren.
  • Klik op Foutopsporing > starten zonder foutopsporing of druk op Ctrl+ F5. Als dit de eerste keer is dat u op uw apparaat implementeert, moet u het koppelen met Visual Studio.

  • Het Origami-project wordt nu gebouwd, geïmplementeerd op uw HoloLens en vervolgens uitgevoerd.

  • Zet uw HoloLens op en kijk rond om uw nieuwe hologrammen te zien.

Hoofdstuk 2 - Staren

In dit hoofdstuk introduceren we de eerste van drie manieren om met uw hologrammen te communiceren: staren.

Doelen

  • Visualiseer uw blik met behulp van een met de wereld vergrendelde cursor.

Instructies

  • Terug naar uw Unity-project en sluit het venster Build-instellingen als dit nog steeds is geopend.
  • Selecteer de map Hologrammen in het deelvenster Project.
  • Sleep het cursorobject naar het deelvenster Hiërarchie op het hoofdniveau.
  • Dubbelklik op het cursorobject om het object nader te bekijken.
  • Klik met de rechtermuisknop op de map Scripts in het deelvenster Project.
  • Klik op het submenu Maken .
  • Selecteer C#-script.
  • Noem het script WorldCursor. Opmerking: de naam is hoofdlettergevoelig. U hoeft de extensie .cs niet toe te voegen.
  • Selecteer het cursorobject in het deelvenster Hiërarchie.
  • Sleep het WorldCursor-script naar het deelvenster Inspector.
  • Dubbelklik op het WorldCursor-script om het te openen in Visual Studio.
  • Kopieer en plak deze code in WorldCursor.cs en Sla alles op.
using UnityEngine;

public class WorldCursor : MonoBehaviour
{
    private MeshRenderer meshRenderer;

    // Use this for initialization
    void Start()
    {
        // Grab the mesh renderer that's on the same object as this script.
        meshRenderer = this.gameObject.GetComponentInChildren<MeshRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;

        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram...
            // Display the cursor mesh.
            meshRenderer.enabled = true;

            // Move the cursor to the point where the raycast hit.
            this.transform.position = hitInfo.point;

            // Rotate the cursor to hug the surface of the hologram.
            this.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
        }
        else
        {
            // If the raycast did not hit a hologram, hide the cursor mesh.
            meshRenderer.enabled = false;
        }
    }
}
  • Bouw de app opnieuw op vanuit instellingen voor het > maken van bestanden.
  • Ga terug naar de Visual Studio-oplossing die eerder is gebruikt om te implementeren op uw HoloLens.
  • Selecteer 'Alles opnieuw laden' wanneer u hierom wordt gevraagd.
  • Klik op Foutopsporing -> Starten zonder foutopsporing of druk op Ctrl + F5.
  • Kijk nu rond de scène en u ziet hoe de cursor communiceert met de vorm van objecten.

Hoofdstuk 3 - Bewegingen

In dit hoofdstuk voegen we ondersteuning toe voor bewegingen. Wanneer de gebruiker een papieren bol selecteert, laten we de bol vallen door de zwaartekracht in te schakelen met behulp van de fysica-engine van Unity.

Doelen

  • Beheer uw hologrammen met de beweging Selecteren.

Instructies

We beginnen met het maken van een script, waarna de beweging Selecteren kan worden gedetecteerd.

  • Maak in de map Scripts een script met de naam GazeGestureManager.
  • Sleep het script GazeGestureManager naar het object OrigamiCollection in de hiërarchie.
  • Open het script GazeGestureManager in Visual Studio en voeg de volgende code toe:
using UnityEngine;
using UnityEngine.XR.WSA.Input;

public class GazeGestureManager : MonoBehaviour
{
    public static GazeGestureManager Instance { get; private set; }

    // Represents the hologram that is currently being gazed at.
    public GameObject FocusedObject { get; private set; }

    GestureRecognizer recognizer;

    // Use this for initialization
    void Awake()
    {
        Instance = this;

        // Set up a GestureRecognizer to detect Select gestures.
        recognizer = new GestureRecognizer();
        recognizer.Tapped += (args) =>
        {
            // Send an OnSelect message to the focused object and its ancestors.
            if (FocusedObject != null)
            {
                FocusedObject.SendMessageUpwards("OnSelect", SendMessageOptions.DontRequireReceiver);
            }
        };
        recognizer.StartCapturingGestures();
    }

    // Update is called once per frame
    void Update()
    {
        // Figure out which hologram is focused this frame.
        GameObject oldFocusObject = FocusedObject;

        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;
        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram, use that as the focused object.
            FocusedObject = hitInfo.collider.gameObject;
        }
        else
        {
            // If the raycast did not hit a hologram, clear the focused object.
            FocusedObject = null;
        }

        // If the focused object changed this frame,
        // start detecting fresh gestures again.
        if (FocusedObject != oldFocusObject)
        {
            recognizer.CancelGestures();
            recognizer.StartCapturingGestures();
        }
    }
}
  • Maak nog een script in de map Scripts, deze keer met de naam SphereCommands.
  • Vouw het object OrigamiCollection uit in de weergave Hiërarchie.
  • Sleep het script SphereCommands naar het object Sphere1 in het deelvenster Hierarchy.
  • Sleep het script SphereCommands naar het object Sphere2 in het deelvenster Hierarchy.
  • Open het script in Visual Studio voor bewerken en vervang de standaardcode door:
using UnityEngine;

public class SphereCommands : MonoBehaviour
{
    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // If the sphere has no Rigidbody component, add one to enable physics.
        if (!this.GetComponent<Rigidbody>())
        {
            var rigidbody = this.gameObject.AddComponent<Rigidbody>();
            rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
        }
    }
}
  • Exporteer, bouw en implementeer de app naar uw HoloLens.
  • Kijk eens naar een van de bollen.
  • Voer de selectiebeweging uit en watch de bol op het oppervlak eronder neer te zetten.

Hoofdstuk 4 - Spraak

In dit hoofdstuk voegen we ondersteuning toe voor twee spraakopdrachten: 'Wereld opnieuw instellen' om de verwijderde bollen terug te zetten naar de oorspronkelijke locatie en 'Drop sphere' om de bol te laten vallen.

Doelen

  • Voeg spraakopdrachten toe die altijd op de achtergrond luisteren.
  • Maak een hologram dat reageert op een spraakopdracht.

Instructies

  • Maak in de map Scripts een script met de naam SpeechManager.
  • Sleep het SpeechManager-script naar het OrigamiCollection-object in de hiërarchie
  • Open het SpeechManager-script in Visual Studio.
  • Kopieer en plak deze code in SpeechManager.cs en Sla alles op:
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;

public class SpeechManager : MonoBehaviour
{
    KeywordRecognizer keywordRecognizer = null;
    Dictionary<string, System.Action> keywords = new Dictionary<string, System.Action>();

    // Use this for initialization
    void Start()
    {
        keywords.Add("Reset world", () =>
        {
            // Call the OnReset method on every descendant object.
            this.BroadcastMessage("OnReset");
        });

        keywords.Add("Drop Sphere", () =>
        {
            var focusObject = GazeGestureManager.Instance.FocusedObject;
            if (focusObject != null)
            {
                // Call the OnDrop method on just the focused object.
                focusObject.SendMessage("OnDrop", SendMessageOptions.DontRequireReceiver);
            }
        });

        // Tell the KeywordRecognizer about our keywords.
        keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray());

        // Register a callback for the KeywordRecognizer and start recognizing!
        keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized;
        keywordRecognizer.Start();
    }

    private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        System.Action keywordAction;
        if (keywords.TryGetValue(args.text, out keywordAction))
        {
            keywordAction.Invoke();
        }
    }
}
  • Open het script SphereCommands in Visual Studio.
  • Werk het script als volgt bij zodat deze wordt gelezen:
using UnityEngine;

public class SphereCommands : MonoBehaviour
{
    Vector3 originalPosition;

    // Use this for initialization
    void Start()
    {
        // Grab the original local position of the sphere when the app starts.
        originalPosition = this.transform.localPosition;
    }

    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // If the sphere has no Rigidbody component, add one to enable physics.
        if (!this.GetComponent<Rigidbody>())
        {
            var rigidbody = this.gameObject.AddComponent<Rigidbody>();
            rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
        }
    }

    // Called by SpeechManager when the user says the "Reset world" command
    void OnReset()
    {
        // If the sphere has a Rigidbody component, remove it to disable physics.
        var rigidbody = this.GetComponent<Rigidbody>();
        if (rigidbody != null)
        {
            rigidbody.isKinematic = true;
            Destroy(rigidbody);
        }

        // Put the sphere back into its original local position.
        this.transform.localPosition = originalPosition;
    }

    // Called by SpeechManager when the user says the "Drop sphere" command
    void OnDrop()
    {
        // Just do the same logic as a Select gesture.
        OnSelect();
    }
}
  • Exporteer, bouw en implementeer de app naar uw HoloLens.
  • Kijk naar een van de bollen en zeg 'Drop Sphere'.
  • Zeg 'Wereld opnieuw instellen' om ze terug te brengen naar hun oorspronkelijke positie.

Hoofdstuk 5 - Ruimtelijk geluid

In dit hoofdstuk voegen we muziek toe aan de app en activeren we vervolgens geluidseffecten voor bepaalde acties. We gebruiken ruimtelijk geluid om geluiden een specifieke locatie in de 3D-ruimte te geven.

Doelen

  • Luister naar hologrammen in uw wereld.

Instructies

  • Selecteer in Unity in het bovenste menu Projectinstellingen > bewerken > Audio
  • Zoek in het deelvenster Inspector aan de rechterkant de instelling Spatializer-invoegtoepassing en selecteer MS HRTF Spatializer.
  • Sleep vanuit de map Holograms in het deelvenster Project het object Ambience naar het object OrigamiCollection in het deelvenster Hierarchy.
  • Selecteer OrigamiCollection en zoek het onderdeel Audiobron in het deelvenster Inspector. Wijzig deze eigenschappen:
    • Controleer de eigenschap Spatialize .
    • Controleer de Play On Awake.
    • Wijzig Spatial Blend in 3D door de schuifregelaar helemaal naar rechts te slepen. De waarde moet veranderen van 0 in 1 wanneer u de schuifregelaar verplaatst.
    • Controleer de eigenschap Loop .
    • Vouw 3D-geluidsinstellingen uit en voer 0.1 in voor Doppler-niveau.
    • Stel Volume rolloff in op Logaritmische rolloff.
    • Stel Maximumafstand in op 20.
  • Maak in de map Scripts een script met de naam SphereSounds.
  • Sleep sphereSounds naar de objecten Sphere1 en Sphere2 in de hiërarchie.
  • Open SphereSounds in Visual Studio, werk de volgende code bij en sla alles op.
using UnityEngine;

public class SphereSounds : MonoBehaviour
{
    AudioSource impactAudioSource = null;
    AudioSource rollingAudioSource = null;

    bool rolling = false;

    void Start()
    {
        // Add an AudioSource component and set up some defaults
        impactAudioSource = gameObject.AddComponent<AudioSource>();
        impactAudioSource.playOnAwake = false;
        impactAudioSource.spatialize = true;
        impactAudioSource.spatialBlend = 1.0f;
        impactAudioSource.dopplerLevel = 0.0f;
        impactAudioSource.rolloffMode = AudioRolloffMode.Logarithmic;
        impactAudioSource.maxDistance = 20f;

        rollingAudioSource = gameObject.AddComponent<AudioSource>();
        rollingAudioSource.playOnAwake = false;
        rollingAudioSource.spatialize = true;
        rollingAudioSource.spatialBlend = 1.0f;
        rollingAudioSource.dopplerLevel = 0.0f;
        rollingAudioSource.rolloffMode = AudioRolloffMode.Logarithmic;
        rollingAudioSource.maxDistance = 20f;
        rollingAudioSource.loop = true;

        // Load the Sphere sounds from the Resources folder
        impactAudioSource.clip = Resources.Load<AudioClip>("Impact");
        rollingAudioSource.clip = Resources.Load<AudioClip>("Rolling");
    }

    // Occurs when this object starts colliding with another object
    void OnCollisionEnter(Collision collision)
    {
        // Play an impact sound if the sphere impacts strongly enough.
        if (collision.relativeVelocity.magnitude >= 0.1f)
        {
            impactAudioSource.Play();
        }
    }

    // Occurs each frame that this object continues to collide with another object
    void OnCollisionStay(Collision collision)
    {
        Rigidbody rigid = gameObject.GetComponent<Rigidbody>();

        // Play a rolling sound if the sphere is rolling fast enough.
        if (!rolling && rigid.velocity.magnitude >= 0.01f)
        {
            rolling = true;
            rollingAudioSource.Play();
        }
        // Stop the rolling sound if rolling slows down.
        else if (rolling && rigid.velocity.magnitude < 0.01f)
        {
            rolling = false;
            rollingAudioSource.Stop();
        }
    }

    // Occurs when this object stops colliding with another object
    void OnCollisionExit(Collision collision)
    {
        // Stop the rolling sound if the object falls off and stops colliding.
        if (rolling)
        {
            rolling = false;
            impactAudioSource.Stop();
            rollingAudioSource.Stop();
        }
    }
}
  • Sla het script op en ga terug naar Unity.
  • Exporteer, bouw en implementeer de app naar uw HoloLens.
  • Ga dichterbij en verder van het podium en draai zij-aan-zij om de geluiden te horen veranderen.

Hoofdstuk 6 - Ruimtelijke toewijzing

Nu gaan we ruimtelijke toewijzing gebruiken om het spelbord op een echt object in de echte wereld te plaatsen.

Doelen

  • Breng uw echte wereld naar de virtuele wereld.
  • Plaats uw hologrammen waar ze voor u het belangrijkst zijn.

Instructies

  • Klik in Unity op de map Hologrammen in het deelvenster Project.
  • Sleep de asset Ruimtelijke toewijzing naar de hoofdmap van de hiërarchie.
  • Klik op het object Spatial Mapping in de hiërarchie.
  • Wijzig in het deelvenster Inspector de volgende eigenschappen:
    • Schakel het selectievakje Visuele meshes tekenen in .
    • Zoek Materiaal tekenen en klik op de cirkel aan de rechterkant. Typ 'draadmodel' in het zoekveld bovenaan. Klik op het resultaat en sluit het venster. Wanneer u dit doet, moet de waarde voor Tekenmateriaal worden ingesteld op Draadmodel.
  • Exporteer, bouw en implementeer de app naar uw HoloLens.
  • Wanneer de app wordt uitgevoerd, wordt een draadmodel-mesh over uw echte wereld heen leggen.
  • Kijk hoe een rollende bol van het podium valt, en op de vloer!

Nu laten we u zien hoe u de OrigamiCollection naar een nieuwe locatie verplaatst:

  • Maak in de map Scripts een script met de naam TapToPlaceParent.
  • Vouw in de hiërarchie de OrigamiCollection uit en selecteer het object Fase .
  • Sleep het script TapToPlaceParent naar het object Stage.
  • Open het script TapToPlaceParent in Visual Studio en werk het script als volgt bij:
using UnityEngine;

public class TapToPlaceParent : MonoBehaviour
{
    bool placing = false;

    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // On each Select gesture, toggle whether the user is in placing mode.
        placing = !placing;

        // If the user is in placing mode, display the spatial mapping mesh.
        if (placing)
        {
            SpatialMapping.Instance.DrawVisualMeshes = true;
        }
        // If the user is not in placing mode, hide the spatial mapping mesh.
        else
        {
            SpatialMapping.Instance.DrawVisualMeshes = false;
        }
    }

    // Update is called once per frame
    void Update()
    {
        // If the user is in placing mode,
        // update the placement to match the user's gaze.

        if (placing)
        {
            // Do a raycast into the world that will only hit the Spatial Mapping mesh.
            var headPosition = Camera.main.transform.position;
            var gazeDirection = Camera.main.transform.forward;

            RaycastHit hitInfo;
            if (Physics.Raycast(headPosition, gazeDirection, out hitInfo,
                30.0f, SpatialMapping.PhysicsRaycastMask))
            {
                // Move this object's parent object to
                // where the raycast hit the Spatial Mapping mesh.
                this.transform.parent.position = hitInfo.point;

                // Rotate this object's parent object to face the user.
                Quaternion toQuat = Camera.main.transform.localRotation;
                toQuat.x = 0;
                toQuat.z = 0;
                this.transform.parent.rotation = toQuat;
            }
        }
    }
}
  • Exporteer, bouw en implementeer de app.
  • Nu zou je de game op een specifieke locatie moeten kunnen plaatsen door ernaar te staren, de beweging Selecteren te gebruiken en vervolgens naar een nieuwe locatie te gaan en de beweging Selecteren opnieuw te gebruiken.

Hoofdstuk 7 - Holografisch plezier

Doelen

  • Onthul de ingang van een holografische onderwereld.

Instructies

Nu laten we u zien hoe u de holografische onderwereld kunt ontdekken:

  • Vanuit de map Hologrammen in het deelvenster Project:
    • Sleep Underworld naar de hiërarchie om een onderliggend element van OrigamiCollection te worden.
  • Maak in de map Scripts een script met de naam HitTarget.
  • Vouw in de hiërarchie de OrigamiCollection uit.
  • Vouw het object Fase uit en selecteer het doelobject (blauwe ventilator).
  • Sleep het HitTarget-script naar het doelobject .
  • Open het HitTarget-script in Visual Studio en werk dit bij als volgt:
using UnityEngine;

public class HitTarget : MonoBehaviour
{
    // These public fields become settable properties in the Unity editor.
    public GameObject underworld;
    public GameObject objectToHide;

    // Occurs when this object starts colliding with another object
    void OnCollisionEnter(Collision collision)
    {
        // Hide the stage and show the underworld.
        objectToHide.SetActive(false);
        underworld.SetActive(true);

        // Disable Spatial Mapping to let the spheres enter the underworld.
        SpatialMapping.Instance.MappingEnabled = false;
    }
}
  • Selecteer in Unity het doelobject .
  • Er zijn nu twee openbare eigenschappen zichtbaar in het onderdeel Doel bereiken en moeten verwijzen naar objecten in onze scène:
    • Sleep Underworld van het deelvenster Hierarchy naar de eigenschap Underworld in het onderdeel Doel bereiken .
    • Sleep Stage van het deelvenster Hiërarchie naar de eigenschap Object to Hide in het onderdeel Doel bereiken .
  • Exporteer, bouw en implementeer de app.
  • Plaats de Origami Collection op de grond en gebruik vervolgens de beweging Selecteren om een bol te laten vallen.
  • Wanneer de bol het doel raakt (blauwe ventilator), treedt er een explosie op. De collectie wordt verborgen en er verschijnt een gat naar de onderwereld.

Het einde

En dat is het einde van deze zelfstudie!

U hebt het volgende geleerd:

  • Een holografische app maken in Unity.
  • Hoe u gebruik kunt maken van staren, gebaar, stem, geluid en ruimtelijke toewijzing.
  • Een app bouwen en implementeren met Visual Studio.

U bent nu klaar om uw eigen holografische ervaring te gaan maken!

Zie ook