HoloLens (1ère génération) Basics 101 : Terminer le projet avec un appareil


Important

Les tutoriels Mixed Reality Academy ont été conçus avec HoloLens (1ère génération), Unity 2017 et Mixed Reality casques immersifs à l’esprit. Nous estimons qu’il est important de laisser ces tutoriels à la disposition des développeurs qui recherchent encore des conseils pour développer des applications sur ces appareils. Ces didacticiels ne seront pas mis à jour avec les derniers ensembles d’outils ou interactions utilisés pour HoloLens 2 et peuvent ne pas être compatibles avec les versions plus récentes d’Unity. Ils sont fournis dans le but de fonctionner sur les appareils pris en charge. Une nouvelle série de tutoriels a été publiée pour HoloLens 2.


Ce tutoriel vous guide tout au long d’un projet complet, intégré à Unity, qui présente les principales fonctionnalités de Windows Mixed Reality sur HoloLens, notamment le regard, les mouvements, l’entrée vocale, le son spatial et le mappage spatial.

Le tutoriel prend environ 1 heure.

Prise en charge des appareils

Cours HoloLens Casques immersifs
Réalité mixte - Principes fondamentaux - Cours 101 : Projet complet avec appareil ✔️

Avant de commencer

Prérequis

Fichiers projet

  • Téléchargez les fichiers requis par le projet. Nécessite Unity 2017.2 ou version ultérieure.
    • Si vous avez toujours besoin de la prise en charge d’Unity 5.6, utilisez cette version.
    • Si vous avez toujours besoin de la prise en charge d’Unity 5.5, utilisez cette version.
    • Si vous avez toujours besoin de la prise en charge d’Unity 5.4, utilisez cette version.
  • Annulez l’archivage des fichiers sur votre bureau ou dans un autre emplacement facile d’accès. Conservez le nom du dossier origami.

Notes

Si vous souhaitez parcourir le code source avant de le télécharger, il est disponible sur GitHub.

Chapitre 1 - Monde « Holo »

Dans ce chapitre, nous allons configurer notre premier projet Unity et parcourir le processus de génération et de déploiement.

Objectifs

  • Configurez Unity pour le développement holographique.
  • Créez un hologramme.
  • Consultez un hologramme que vous avez effectué.

Instructions

  • Démarrez Unity.
  • Sélectionnez Ouvrir.
  • Entrez l’emplacement en tant que dossier Origami que vous avez précédemment archivé.
  • Sélectionnez Origami , puis cliquez sur Sélectionner un dossier.
  • Étant donné que le projet Origami ne contient pas de scène, enregistrez la scène par défaut vide dans un nouveau fichier à l’aide de : Fichier / Enregistrer la scène sous.
  • Nommez la nouvelle scène Origami et appuyez sur le bouton Enregistrer.

Configurer la caméra virtuelle main

  • Dans Hierarchy Panel, sélectionnez Main Camera.
  • Dans l’inspecteur, définissez sa position de transformation sur 0,0,0.
  • Recherchez la propriété Clear Flags et remplacez la liste déroulante Skybox par Couleur unie.
  • Cliquez sur le champ Background pour ouvrir un sélecteur de couleurs.
  • Définissez R, G, B et A sur 0.

Configurer la scène

  • Dans le panneau Hiérarchie, cliquez sur Créer et créer un vide.
  • Cliquez avec le bouton droit sur le nouveau GameObject , puis sélectionnez Renommer. Renommez GameObject en OrigamiCollection.
  • Dans le dossier Hologrammes du panneau projet (développez Ressources et sélectionnez Hologrammes ou double-cliquez sur le dossier Hologrammes dans le panneau projet) :
    • Faites glisser Stage dans la hiérarchie pour être un enfant d’OrigamiCollection.
    • Faites glisser Sphere1 dans la hiérarchie pour être un enfant d’OrigamiCollection.
    • Faites glisser Sphere2 dans la hiérarchie pour être un enfant d’OrigamiCollection.
  • Cliquez avec le bouton droit sur l’objet Lumière directionnelle dans le panneau hiérarchie , puis sélectionnez Supprimer.
  • À partir du dossier Hologrammes , faites glisser Lumières vers la racine du panneau hiérarchie.
  • Dans la hiérarchie, sélectionnez OrigamiCollection.
  • Dans l’inspecteur, définissez la position de transformation sur 0, -0.5 et 2.0.
  • Appuyez sur le bouton Lecture dans Unity pour afficher un aperçu de vos hologrammes.
  • Vous devez voir les objets Origami dans la fenêtre d’aperçu.
  • Appuyez sur Lire une deuxième fois pour arrêter le mode d’aperçu.

Exporter le projet de Unity vers Visual Studio

  • Dans Unity, sélectionnez Paramètres de build de fichier>.

  • Sélectionnez plateforme Windows universelle dans la liste Plateforme, puis cliquez sur Changer de plateforme.

  • Définissez sdksur Universal 10 et Type de build sur D3D.

  • Vérifiez les projets Unity C#.

  • Cliquez sur Ajouter des scènes ouvertes pour ajouter la scène.

  • Cliquez sur Générer.

  • Dans la fenêtre de l’explorateur de fichiers qui s’affiche, créez un nouveau dossier nommé « App ».

  • Cliquez sur le dossier d’application.

  • Appuyez sur Sélectionner un dossier.

  • Une fois Unity terminé, une fenêtre Explorateur de fichiers s’affiche.

  • Ouvrez le dossier Application .

  • Ouvrez (double-cliquez) Origami.sln.

  • À l’aide de la barre d’outils supérieure dans Visual Studio, remplacez la cible Debug par Release et d’ARM par X86.

  • Cliquez sur la flèche en regard du bouton Appareil, puis sélectionnez Machine distante à déployer via Wi-Fi.

    • Définissez l’adresse sur le nom ou l’adresse IP de votre HoloLens. Si vous ne connaissez pas l’adresse IP de votre appareil, recherchez dans Paramètres > Réseau & Options avancées Internet > ou demandez à Cortana « Hey Cortana, Qu’est-ce que mon adresse IP ? »
    • Si l’HoloLens est attaché via USB, vous pouvez plutôt sélectionner Appareil à déployer sur USB.
    • Laissez le mode d’authentification défini sur Universel.
    • Cliquez sur Sélectionner
  • Cliquez sur Déboguer > Démarrer sans débogage ou appuyez sur Ctrl + F5. S’il s’agit de la première fois qu’il s’agit d’un déploiement sur votre appareil, vous devez l’associer à Visual Studio.

  • Le projet Origami va maintenant générer, déployer sur votre HoloLens, puis s’exécuter.

  • Mettez votre HoloLens et regardez autour de vous pour voir vos nouveaux hologrammes.

Chapitre 2 - Regard

Dans ce chapitre, nous allons présenter la première des trois façons d’interagir avec vos hologrammes : le regard.

Objectifs

  • Visualisez votre regard à l’aide d’un curseur verrouillé dans le monde.

Instructions

  • Retour à votre projet Unity, puis fermez la fenêtre Paramètres de build si elle est toujours ouverte.
  • Sélectionnez le dossier Hologrammes dans le panneau Projet.
  • Faites glisser l’objet Cursor dans le panneau Hierarchy au niveau racine.
  • Double-cliquez sur l’objet Cursor pour l’examiner de plus près.
  • Cliquez avec le bouton droit sur le dossier Scripts dans le panneau Projet.
  • Cliquez sur le sous-menu Créer .
  • Sélectionnez Script C#.
  • Nommez le script WorldCursor. Remarque : Le nom respecte la casse. Vous n’avez pas besoin d’ajouter l’extension .cs.
  • Sélectionnez l’objet Cursor dans le panneau Hiérarchie.
  • Faites glisser et déposez le script WorldCursor dans le panneau Inspector.
  • Double-cliquez sur le script WorldCursor pour l’ouvrir dans Visual Studio.
  • Copiez et collez ce code dans WorldCursor.cs et Enregistrez tout.
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;
        }
    }
}
  • Régénérez l’application à partir des paramètres de génération de fichiers>.
  • Revenez à la solution Visual Studio précédemment utilisée pour le déploiement sur votre HoloLens.
  • Sélectionnez « Recharger tout » lorsque vous y êtes invité.
  • Cliquez sur Déboguer -> Démarrer sans débogage ou appuyez sur Ctrl + F5.
  • Regardez maintenant la scène et remarquez comment le curseur interagit avec la forme des objets.

Chapitre 3 - Mouvements

Dans ce chapitre, nous allons ajouter la prise en charge des mouvements. Lorsque l’utilisateur sélectionne une sphère de papier, nous faisons tomber la sphère en activant la gravité à l’aide du moteur physique d’Unity.

Objectifs

  • Contrôlez vos hologrammes avec le mouvement Sélectionner.

Instructions

Nous allons commencer par créer un script, puis détecter le mouvement Sélectionner.

  • Dans le dossier Scripts , créez un script nommé GazeGestureManager.
  • Faites glisser le script GazeGestureManager sur l’objet OrigamiCollection dans la hiérarchie.
  • Ouvrez le script GazeGestureManager dans Visual Studio et ajoutez le code suivant :
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();
        }
    }
}
  • Créez un autre script dans le dossier Scripts, cette fois nommé SphereCommands.
  • Développez l’objet OrigamiCollection dans la vue Hierarchy.
  • Faites glisser le script SphereCommands sur l’objet Sphere1 dans le panneau Hierarchy.
  • Faites glisser le script SphereCommands sur l’objet Sphere2 dans le panneau Hierarchy.
  • Ouvrez le script dans Visual Studio pour le modifier, puis remplacez le code par défaut par les éléments suivants :
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;
        }
    }
}
  • Exportez, générez et déployez l’application sur votre HoloLens.
  • Regardez l’une des sphères.
  • Effectuez le mouvement de sélection et watch la chute de la sphère sur la surface ci-dessous.

Chapitre 4 - Voix

Dans ce chapitre, nous allons ajouter la prise en charge de deux commandes vocales : « Réinitialiser le monde » pour renvoyer les sphères supprimées à leur emplacement d’origine et « Supprimer la sphère » pour faire tomber la sphère.

Objectifs

  • Ajoutez des commandes vocales qui écoutent toujours en arrière-plan.
  • Créez un hologramme qui réagit à une commande vocale.

Instructions

  • Dans le dossier Scripts , créez un script nommé SpeechManager.
  • Faire glisser le script SpeechManager sur l’objet OrigamiCollection dans la hiérarchie
  • Ouvrez le script SpeechManager dans Visual Studio.
  • Copiez et collez ce code dans SpeechManager.cs et Enregistrez tout :
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();
        }
    }
}
  • Ouvrez le script SphereCommands dans Visual Studio.
  • Mettez à jour le script pour lire comme suit :
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();
    }
}
  • Exportez, générez et déployez l’application sur votre HoloLens.
  • Regardez l’une des sphères et dites « Drop Sphere ».
  • Dites « Réinitialiser le monde » pour les ramener à leurs positions initiales.

Chapitre 5 - Son spatial

Dans ce chapitre, nous allons ajouter de la musique à l’application, puis déclencher des effets sonores sur certaines actions. Nous allons utiliser le son spatial pour donner aux sons un emplacement spécifique dans l’espace 3D.

Objectifs

  • Entendez les hologrammes dans votre monde.

Instructions

  • Dans Unity, sélectionnez dans le menu supérieur Modifier l’audio > des paramètres > du projet
  • Dans le panneau inspecteur à droite, recherchez le paramètre De plug-in Spatializer et sélectionnez MS HRTF Spatializer.
  • À partir du dossier Holograms du panneau Project, faites glisser l’objet Ambiance sur l’objet OrigamiCollection dans le panneau Hierarchy.
  • Sélectionnez OrigamiCollection et recherchez le composant Source audio dans le panneau Inspecteur. Modifiez ces propriétés :
    • Vérifiez la propriété Spatialize .
    • Vérifiez l’option Play On Awake.
    • Remplacez Spatial Blend par 3D en faisant glisser le curseur vers la droite. La valeur doit passer de 0 à 1 lorsque vous déplacez le curseur.
    • Vérifiez la propriété Loop .
    • Développez Paramètres de son 3D, puis entrez 0.1 pour Niveau Doppler.
    • Définissez Rolloff de volume sur Rolloff logarithmique.
    • Définissez Distance maximale sur 20.
  • Dans le dossier Scripts , créez un script nommé SphereSounds.
  • Faites glisser et déposez SphereSounds vers les objets Sphere1 et Sphere2 de la hiérarchie.
  • Ouvrez SphereSounds dans Visual Studio, mettez à jour le code suivant et enregistrez tout.
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();
        }
    }
}
  • Enregistrez le script et revenez à Unity.
  • Exportez, générez et déployez l’application sur votre HoloLens.
  • Déplacez-vous de plus en plus loin de la scène et tournez d’un côté à l’autre pour entendre les sons changer.

Chapitre 6 - Mappage spatial

Maintenant, nous allons utiliser le mappage spatial pour placer le plateau de jeu sur un objet réel dans le monde réel.

Objectifs

  • Apportez votre monde réel dans le monde virtuel.
  • Placez vos hologrammes là où ils vous importent le plus.

Instructions

  • Dans Unity, cliquez sur le dossier Holograms dans le panneau Projet.
  • Faites glisser la ressource Mappage spatial vers la racine de la hiérarchie.
  • Cliquez sur l’objet Mappage spatial dans la hiérarchie.
  • Dans le panneau Inspecteur, modifiez les propriétés suivantes :
    • Cochez la case Dessiner des maillages visuels .
    • Recherchez Dessiner le matériau et cliquez sur le cercle à droite. Tapez « wireframe » dans le champ de recherche en haut. Cliquez sur le résultat, puis fermez la fenêtre. Dans ce cas, la valeur de Draw Material doit être définie sur Wireframe.
  • Exportez, générez et déployez l’application sur votre HoloLens.
  • Lorsque l’application s’exécute, un maillage filaire superpose votre monde réel.
  • Regardez comment une sphère roulante tombera de la scène, et sur le sol !

Nous allons maintenant vous montrer comment déplacer l’OrigamiCollection vers un nouvel emplacement :

  • Dans le dossier Scripts , créez un script nommé TapToPlaceParent.
  • Dans la hiérarchie, développez OrigamiCollection et sélectionnez l’objet Stage .
  • Faites glisser le script TapToPlaceParent sur l’objet Stage.
  • Ouvrez le script TapToPlaceParent dans Visual Studio et mettez-le à jour comme suit :
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;
            }
        }
    }
}
  • Exportez, générez et déployez l’application.
  • Vous devez maintenant être en mesure de placer le jeu à un emplacement spécifique en le regardant, en utilisant le mouvement Sélectionner, puis en vous déplaçant vers un nouvel emplacement, puis en utilisant à nouveau le mouvement Sélectionner.

Chapitre 7 - Plaisir holographique

Objectifs

  • Révéler l’entrée d’un monde souterrain holographique.

Instructions

Nous allons maintenant vous montrer comment découvrir le monde souterrain holographique :

  • À partir du dossier Holograms dans le panneau de projet :
    • Faites glisser Underworld dans la hiérarchie pour être un enfant d’OrigamiCollection.
  • Dans le dossier Scripts , créez un script nommé HitTarget.
  • Dans la hiérarchie, développez OrigamiCollection.
  • Développez l’objet Stage et sélectionnez l’objet Target (fan bleu).
  • Faites glisser le script HitTarget sur l’objet Target .
  • Ouvrez le script HitTarget dans Visual Studio et mettez-le à jour comme suit :
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;
    }
}
  • Dans Unity, sélectionnez l’objet Cible .
  • Deux propriétés publiques sont désormais visibles sur le composant Atteindre la cible et doivent référencer des objets dans notre scène :
    • Faites glisser Underworld du panneau Hierarchy vers la propriété Underworld du composant Atteindre la cible .
    • Faites glisser l’étape du panneau Hiérarchie vers la propriété Object to Hide sur le composant Atteindre la cible .
  • Exportez, générez et déployez l’application.
  • Placez la collection Origami sur le sol, puis utilisez le mouvement Sélectionner pour faire tomber une sphère.
  • Lorsque la sphère atteint la cible (ventilateur bleu), une explosion se produit. La collection sera masquée et un trou dans le monde souterrain s’affichera.

La fin

Et c’est la fin de ce tutoriel !

Vous avez appris :

  • Comment créer une application holographique dans Unity.
  • Comment utiliser le regard, le mouvement, la voix, le son et le mappage spatial.
  • Comment créer et déployer une application à l’aide de Visual Studio.

Vous êtes maintenant prêt à commencer à créer votre propre expérience holographique !

Voir aussi