HoloLens (1st gen) Basics 101: Complete project with device


Fontos

A Mixed Reality Academy oktatóanyagait a HoloLens (1. generációs), a Unity 2017 és Mixed Reality modern headsetek szem előtt tartásával terveztük. Ezért fontosnak tartjuk, hogy ezeket az oktatóanyagokat helyben hagyjuk azoknak a fejlesztőknek, akik továbbra is útmutatást keresnek az ilyen eszközök fejlesztéséhez. Ezek az oktatóanyagok nem frissülnek a legújabb eszközkészletekkel vagy interakciókkal, amelyeket a HoloLens 2 használnak, és előfordulhat, hogy nem kompatibilisek a Unity újabb verzióival. A támogatott eszközökön továbbra is működni fognak. A HoloLens 2 új oktatóanyag-sorozatot tett közzé.


Ez az oktatóanyag végigvezeti a Unitybe épített teljes projekten, amely bemutatja a HoloLens alapvető Windows Mixed Reality funkcióit, beleértve a tekintetet, a kézmozdulatokat, a hangbevitelt, a térbeli hangot és a térbeli leképezést.

Az oktatóanyag körülbelül 1 órát vesz igénybe.

Eszköztámogatás

Tanfolyam HoloLens Modern headsetek
Mr Basics 101: Complete project with device ✔️

Előkészületek

Előfeltételek

Projektfájlok

  • Töltse le a projekthez szükséges fájlokat . A Unity 2017.2-s vagy újabb verziójára van szükség.
    • Ha továbbra is szüksége van a Unity 5.6-ra, használja ezt a kiadást.
    • Ha továbbra is unity 5.5-támogatásra van szüksége, használja ezt a kiadást.
    • Ha továbbra is unity 5.4-támogatásra van szüksége, használja ezt a kiadást.
  • Törölje a fájlok archiválását az asztalra vagy más könnyen elérhető helyre. Tartsa meg a mappa nevét Origami néven.

Megjegyzés

Ha a letöltés előtt szeretné áttekinteni a forráskódot, az elérhető a GitHubon.

1. fejezet – "Holo" világ

Ebben a fejezetben beállítjuk az első Unity-projektet, és végigvezetjük a buildelési és üzembe helyezési folyamaton.

Célkitűzések

  • Állítsa be a Unityt a holografikus fejlesztéshez.
  • Hozzon létre egy hologramot.
  • Tekintse meg a létrehozott hologramot.

Utasítások

  • Indítsa el a Unityt.
  • Válassza a Megnyitás lehetőséget.
  • Adja meg a helyet a korábban archiválatlan Origami mappaként.
  • Válassza az Origami lehetőséget, és kattintson a Mappa kiválasztása elemre.
  • Mivel az Origami projekt nem tartalmaz jelenetet, mentse az üres alapértelmezett jelenetet egy új fájlba a következő használatával: Fájlmentési / jelenet másként.
  • Nevezze el az új jelenetEt Origami néven, és nyomja le a Mentés gombot.

A fő virtuális kamera beállítása

  • A Hierarchia panelen válassza a Fő kamera lehetőséget.
  • Az Inspector0,0,0-ra állítja az átalakítópozíciót.
  • Keresse meg a Jelzők törlése tulajdonságot , és módosítsa a legördülő listát SkyboxrólEgyszínűre.
  • Kattintson a Háttér mezőre egy színválasztó megnyitásához.
  • Állítsa az R, G, B és A értéket 0-ra.

A jelenet beállítása

  • A Hierarchia panelen kattintson a Létrehozás és az Üres létrehozása elemre.
  • Kattintson a jobb gombbal az új GameObject elemre , és válassza az Átnevezés parancsot. Nevezze át a GameObject nevet OrigamiCollection névre.
  • A Projektpanel Hologramok mappájában (bontsa ki az Eszközök elemet, és válassza a Hologramok lehetőséget, vagy kattintson duplán a Hologramok mappára a Projekt panelen):
    • Húzza a Szakaszt a hierarchiába, hogy az OrigamiCollection gyermeke legyen.
    • Húzza a Sphere1 elemet a hierarchiába, hogy az OrigamiCollection gyermeke legyen.
    • Húzza a Sphere2 elemet a hierarchiába, hogy az OrigamiCollection gyermeke legyen.
  • Kattintson a jobb gombbal az Irányított fény objektumra a Hierarchia panelen , és válassza a Törlés parancsot.
  • A Hologramok mappából húzza a Lights (Fények) elemet a Hierarchia panel gyökerébe.
  • A Hierarchiában válassza az OrigamiCollection elemet.
  • Az Inspectorben állítsa az átalakítás pozícióját 0, -0,5, 2,0 értékre.
  • A Hologramok előnézetének megtekintéséhez nyomja le a Lejátszás gombot a Unityben.
  • Meg kell jelennie az Origami objektumok az előnézeti ablakban.
  • Nyomja le másodszor a Lejátszás gombot az előnézeti mód leállításához.

Projekt exportálása a Unityből a Visual Studióba

  • A Unityben válassza a Fájl > buildelési beállításai lehetőséget.

  • Válassza a Univerzális Windows-platform lehetőséget a Platform listában, majd kattintson a Platformváltás elemre.

  • Állítsa az SDK-tuniverzális 10-esre , a buildtípustpedig D3D értékre.

  • Ellenőrizze a Unity C#-projekteket.

  • A jelenet hozzáadásához kattintson a Jelenetek hozzáadása elemre.

  • Kattintson a Build (Build) elemre.

  • A megjelenő fájlkezelő ablakban hozzon létre egy "App" nevű új mappát .

  • Kattintson egyetlen kattintással az alkalmazásmappára.

  • Nyomja le a Mappa kiválasztása gombot.

  • Amikor a Unity elkészült, megjelenik egy Fájlkezelő ablak.

  • Nyissa meg az Alkalmazás mappát.

  • Nyissa meg (dupla kattintással) Origami.sln.

  • A Visual Studio felső eszköztárának használatával módosítsa a célértéket Hibakeresésről Kiadásra , ARM-ről X86-ra.

  • Kattintson az Eszköz gomb melletti nyílra, és válassza a Távoli gép lehetőséget a Wi-Fi-n keresztüli üzembe helyezéshez.

    • Állítsa a Cím értékét a HoloLens nevére vagy IP-címére. Ha nem ismeri az eszköz IP-címét, keresse meg a Gépházban > a Hálózat & internet > speciális beállításait , vagy kérdezze meg Cortanát : "Hey Cortana, Mi az IP-címem?"
    • Ha a HoloLens USB-n keresztül van csatlakoztatva, akkor az USB-n keresztüli üzembe helyezéshez válassza az Eszköz lehetőséget.
    • Hagyja a hitelesítési módotUniverzális értékre állítva.
    • Kattintson a Kijelölés gombra
  • Kattintson a Hibakeresés > indítása hibakeresés nélkül elemre, vagy nyomja le a Ctrl + F5 billentyűkombinációt. Ha ez az első üzembe helyezés az eszközön, párosítania kell azt a Visual Studióval.

  • Az Origami projekt most építeni, üzembe helyezni a HoloLens, majd fut.

  • Helyezze fel a HoloLenst, és nézzen körül az új hologramok megtekintéséhez.

2. fejezet – Tekintet

Ebben a fejezetben bemutatjuk a hologramok kezelésének első három módját – tekintetét.

Célkitűzések

  • Vizualizálja a tekintetét egy világra zárolt kurzor használatával.

Utasítások

  • Vissza a Unity-projekthez, és ha még mindig nyitva van, zárja be a Build Settings ablakot.
  • Válassza a Hologramok mappát a Projekt panelen.
  • Húzza a Kurzor objektumot a hierarchia panelre a gyökérszinten.
  • Kattintson duplán a Kurzor objektumra, hogy közelebbről is megtekinthesse.
  • Kattintson a jobb gombbal a Project panel Parancsfájlok mappájára.
  • Kattintson a Létrehozás almenüre.
  • Válassza a C#-szkript lehetőséget.
  • Adja a szkriptnek a WorldCursor nevet. Megjegyzés: A név megkülönbözteti a kis- és nagybetűk nevét. Nem kell hozzáadnia a .cs bővítményt.
  • Válassza a Kurzor objektumot a Hierarchia panelen.
  • Húzza a WorldCursor szkriptet az Inspector panelre.
  • Kattintson duplán a WorldCursor szkriptre a Visual Studióban való megnyitásához.
  • Másolja és illessze be ezt a kódot a WorldCursor.cs fájlba, és mentse az összeset.
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;
        }
    }
}
  • Építse újra az alkalmazást a Fájl > buildelési beállításaiból.
  • Térjen vissza a Korábban a HoloLensben való üzembe helyezéshez használt Visual Studio-megoldáshoz.
  • Amikor a rendszer kéri, válassza az "Összes újrabetöltése" lehetőséget.
  • Kattintson a Hibakeresés –> Indítás hibakeresés nélkül parancsra, vagy nyomja le a Ctrl + F5 billentyűkombinációt.
  • Most nézzen körül a jelenetben, és figyelje meg, hogy a kurzor hogyan kommunikál az objektumok alakjával.

3. fejezet – Kézmozdulatok

Ebben a fejezetben támogatjuk a kézmozdulatokat. Amikor a felhasználó kiválaszt egy papírgömböt, a Unity fizikai motorjának használatával bekapcsoljuk a gravitációt.

Célkitűzések

  • A hologramok vezérlése a Kiválasztás kézmozdulattal.

Utasítások

Először hozzunk létre egy szkriptet, majd észleljük a Kiválasztás kézmozdulatot.

  • A Szkriptek mappában hozzon létre egy GazeGestureManager nevű szkriptet.
  • Húzza a GazeGestureManager szkriptet a hierarchia OrigamiCollection objektumára.
  • Nyissa meg a GazeGestureManager szkriptet a Visual Studióban, és adja hozzá a következő kódot:
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();
        }
    }
}
  • Hozzon létre egy másik szkriptet a Szkriptek mappában, ezúttal SphereCommands néven.
  • Bontsa ki az OrigamiCollection objektumot a Hierarchia nézetben.
  • Húzza a SphereCommands szkriptet a Hierarchia panel Sphere1 objektumára.
  • Húzza a SphereCommands szkriptet a Hierarchia panel Sphere2 objektumára.
  • Nyissa meg a szkriptet szerkesztésre a Visual Studióban, és cserélje le az alapértelmezett kódot a következőre:
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;
        }
    }
}
  • Exportálhatja, létrehozhatja és üzembe helyezheti az alkalmazást a HoloLensben.
  • Nézd meg az egyik gömböt.
  • Hajtsa végre a kijelölési kézmozdulatot, és watch a gömböt az alábbi felületre.

4. fejezet – Hang

Ebben a fejezetben két hangparancsot fogunk támogatni: a "Világ alaphelyzetbe állítása" parancsot az elvetett gömbök eredeti helyére való visszatéréséhez, a "Drop sphere" parancsot pedig a gömb leeséséhez.

Célkitűzések

  • Adjon hozzá hangparancsokat, amelyek mindig a háttérben figyelnek.
  • Hozzon létre egy hologramot, amely reagál egy hangparancsra.

Utasítások

  • A Szkriptek mappában hozzon létre egy SpeechManager nevű szkriptet.
  • Húzza a SpeechManager szkriptet a hierarchia OrigamiCollection objektumára
  • Nyissa meg a SpeechManager szkriptet a Visual Studióban.
  • Másolja és illessze be ezt a kódot a SpeechManager.cs fájlba, és mentse az összeset:
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();
        }
    }
}
  • Nyissa meg a SphereCommands szkriptet a Visual Studióban.
  • Frissítse a szkriptet a következőképpen olvasásra:
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();
    }
}
  • Exportálhatja, létrehozhatja és üzembe helyezheti az alkalmazást a HoloLensben.
  • Nézze meg az egyik gömböt, és mondja ki a "Drop Sphere" szót.
  • Mondja ki a "Reset World" szót, hogy visszahozza őket a kezdeti pozíciójukba.

5. fejezet – Térbeli hang

Ebben a fejezetben zenét adunk hozzá az alkalmazáshoz, majd hangeffektusokat aktiválunk bizonyos műveletekre. Térbeli hangot fogunk használni, hogy a hangok egy adott helyet adjanak a 3D térben.

Célkitűzések

  • Hologramokat hallhat a világában.

Utasítások

  • A Unityben válassza a felső menüBen a Projektbeállítások > szerkesztése > hang lehetőséget
  • A jobb oldalon található Inspector panelen keresse meg a Spatializer beépülő modul beállítást, és válassza az MS HRTF Spatializer lehetőséget.
  • A Projekt panel Hologramok mappájából húzza az Ambience objektumot a Hierarchia panel OrigamiCollection objektumára.
  • Válassza az OrigamiCollection lehetőséget, és keresse meg a Hangforrás összetevőt az Inspector panelen. Módosítsa ezeket a tulajdonságokat:
    • Ellenőrizze a Spatialize tulajdonságot.
    • Nézd meg a Play On Awakeet.
    • A térbeli keverést3D-re módosíthatja a csúszka jobbra húzásával. A csúszka mozgatásakor az értéknek 0-ról 1-re kell változnia.
    • Ellenőrizze a Loop tulajdonságot.
    • Bontsa ki a 3D hangbeállítások elemet, és írja be a 0.1 értéket a Doppler-szint mezőbe.
    • Állítsa a Volume Rolloff értékét Logaritmikus rolloff értékre.
    • Állítsa a Maximális távolságbeállítást 20-ra.
  • A Szkriptek mappában hozzon létre egy SphereSounds nevű szkriptet.
  • Húzza a SphereSounds elemet a Hierarchia Sphere1 és Sphere2 objektumaihoz.
  • Nyissa meg a SphereSoundst a Visual Studióban, frissítse az alábbi kódot, és mentse az összeset.
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();
        }
    }
}
  • Mentse a szkriptet, és térjen vissza a Unitybe.
  • Exportálhatja, létrehozhatja és üzembe helyezheti az alkalmazást a HoloLensben.
  • Lépjen közelebb és távolabb a Színpadról, és fordítson oldalra a hangok változásának meghallgatásához.

6. fejezet – Térbeli leképezés

Most térbeli leképezéssel fogjuk elhelyezni a játéktáblát egy valós objektumon a való világban.

Célkitűzések

  • Hozza a valós világot a virtuális világba.
  • Helyezze a hologramokat oda, ahol a legfontosabbak önnek.

Utasítások

  • A Unityben kattintson a Hologramok mappára a Projekt panelen.
  • Húzza a Térbeli leképezés objektumot a hierarchia gyökerébe.
  • Kattintson a Hierarchia Térbeli leképezés objektumára.
  • Az Inspector panelen módosítsa a következő tulajdonságokat:
    • Jelölje be a Vizuális hálók rajzolása jelölőnégyzetet .
    • Keresse meg az Anyag rajzolása elemet, és kattintson a jobb oldali körre. Írja be a "drótváz" szót a felül található keresőmezőbe. Kattintson az eredményre, majd zárja be az ablakot. Ha ezt teszi, az Anyag rajzolása értékének Wireframe értékre kell állítania.
  • Exportálhatja, létrehozhatja és üzembe helyezheti az alkalmazást a HoloLensben.
  • Az alkalmazás futtatásakor a drótvázháló átfedi a valós világot.
  • Nézd meg, hogyan fog egy gördülő gömb leesni a színpadról, és a padlóra!

Most megmutatjuk, hogyan helyezheti át az OrigamiCollection-t egy új helyre:

  • A Szkriptek mappában hozzon létre egy TapToPlaceParent nevű szkriptet.
  • A Hierarchia területen bontsa ki az OrigamiCollection elemet , és válassza ki a Stage objektumot.
  • Húzza a TapToPlaceParent szkriptet a Stage objektumra.
  • Nyissa meg a TapToPlaceParent szkriptet a Visual Studióban, és frissítse a következőre:
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;
            }
        }
    }
}
  • Az alkalmazás exportálása, buildelése és üzembe helyezése.
  • Most már képesnek kell lennie arra, hogy a játékot egy adott helyen helyezze el úgy, hogy rátekint, a Kiválasztás kézmozdulattal, majd egy új helyre lép, és ismét a Kiválasztás kézmozdulatot használja.

7. fejezet – Holografikus szórakozás

Célkitűzések

  • Felfedni egy holografikus alvilág bejáratát.

Utasítások

Most bemutatjuk, hogyan fedheti fel a holografikus alvilágot:

  • A Projektpanel Hologramok mappájából:
    • Húzza az Alvilágot a hierarchiába, hogy az OrigamiCollection gyermeke legyen.
  • A Szkriptek mappában hozzon létre egy HitTarget nevű szkriptet.
  • A Hierarchia területen bontsa ki az OrigamiCollection elemet.
  • Bontsa ki a Stage objektumot, és válassza ki a Cél objektumot (kék ventilátor).
  • Húzza a HitTarget szkriptet a Cél objektumra.
  • Nyissa meg a HitTarget-szkriptet a Visual Studióban, és frissítse a következőre:
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;
    }
}
  • A Unityben válassza ki a Cél objektumot.
  • Két nyilvános tulajdonság látható a Hit Target összetevőn, és a jelenetben lévő objektumokra kell hivatkoznia:
    • Húzza az Alvilágot a Hierarchia panelről a Hit Target összetevő Underworld tulajdonságába.
    • Húzza a Fázis elemet a Hierarchia panelről az Objektum a Cél cél összetevő elrejtéséhez tulajdonságához.
  • Az alkalmazás exportálása, létrehozása és üzembe helyezése.
  • Helyezze az Origami Gyűjtemény a padlóra, majd használja a Select kézmozdulatot, hogy a gömb csepp.
  • Amikor a gömb eléri a célt (kék ventilátor), robbanás történik. A gyűjtemény el lesz rejtve, és megjelenik egy lyuk az alvilágba.

Vége

És ez a vége ennek az oktatóanyagnak!

A következőket tanulta meg:

  • Holografikus alkalmazás létrehozása a Unityben.
  • Hogyan használhatja a tekintetet, a kézmozdulatot, a hangot, a hangot és a térbeli leképezést.
  • Alkalmazás létrehozása és üzembe helyezése a Visual Studióval.

Most már készen áll arra, hogy saját holografikus élményt hozzon létre!

Lásd még