HoloLens (1. nesil) Temel Bilgiler 101: Projeyi cihazla tamamlama


Önemli

Karma Gerçeklik Academy öğreticileri HoloLens (1. nesil), Unity 2017 ve Karma Gerçeklik Immersive Headsets düşünülerek tasarlanmıştır. Bu nedenle, bu cihazlar için geliştirme konusunda hala rehberlik arayan geliştiriciler için bu öğreticileri yerinde bırakmanın önemli olduğunu hissediyoruz. Bu öğreticiler, HoloLens 2 için kullanılan en son araç kümeleri veya etkileşimlerle güncelleştirilmez ve Unity'nin daha yeni sürümleriyle uyumlu olmayabilir. Desteklenen cihazlarda çalışmaya devam etmek için bakımları yapılır. HoloLens 2 için yeni bir öğretici serisi yayınlanmıştır.


Bu öğreticide, Bakış, hareketler, ses girişi, uzamsal ses ve uzamsal eşlemedahil olmak üzere HoloLens'teki temel Windows Mixed Reality özelliklerini gösteren Unity'de oluşturulmuş eksiksiz bir projede size yol gösterilecektir.

Öğreticinin tamamlanması yaklaşık 1 saat sürer.

Cihaz desteği

Kurs HoloLens Çevreleyici kulaklıklar
MR Basics 101: Projeyi cihazla tamamlama ✔️

Başlamadan önce

Önkoşullar

Proje dosyaları

  • Projenin gerektirdiği dosyaları indirin. Unity 2017.2 veya sonraki bir sürümü gerektirir.
    • Unity 5.6 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
    • Unity 5.5 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
    • Unity 5.4 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
  • Dosyaları masaüstünüzde veya ulaşılmaya kolay başka bir konumda arşivden kaldırın. Klasör adını Origami olarak tutun.

Not

İndirmeden önce kaynak kodu incelemek isterseniz GitHub'da kullanılabilir.

Bölüm 1 - "Holo" dünyası

Bu bölümde ilk Unity projemizi ayarlayıp derleme ve dağıtma işleminde adım adım ilerleyeceğiz.

Hedefler

  • Unity'i holografik geliştirme için ayarlayın.
  • Hologram yap.
  • Yaptığınız hologramı görün.

Yönergeler

  • Unity'i başlatın.
  • ’ı seçin.
  • Konumu daha önce arşivlediğiniz Origami klasörü olarak girin.
  • Origami'yi seçin ve Klasör Seç'e tıklayın.
  • Origami projesi bir sahne içermediğinden, şunu kullanarak boş varsayılan sahneyi yeni bir dosyaya kaydedin: Sahneyi / Farklı Kaydet.
  • Yeni sahneyi Origami olarak adlandırın ve Kaydet düğmesine basın.

Ana sanal kamerayı ayarlama

  • Hiyerarşi PanelindeAna Kamera'yı seçin.
  • Denetçide dönüşüm konumunu 0,0,0 olarak ayarlayın.
  • Bayrakları Temizle özelliğini bulun ve Skybox açılan listesini Düz renk olarak değiştirin.
  • Renk seçiciyi açmak için Arka Plan alanına tıklayın.
  • R, G, B ve A'yı0 olarak ayarlayın.

Sahneyi ayarlama

  • Hiyerarşi Panelinde Oluştur ve Boş Oluştur'a tıklayın.
  • Yeni GameObject'e sağ tıklayın ve Yeniden Adlandır'ı seçin. GameObject'i OrigamiCollection olarak yeniden adlandırın.
  • Proje Paneli'ndeki Hologramlar klasöründen (Varlıklar'ı genişletin ve Hologramlar'ı seçin veya Proje Panelinde Hologramlar klasörüne çift tıklayın):
    • OrigamiCollection'ın bir alt öğesi olmak için Sahneyi Hiyerarşiye sürükleyin.
    • OrigamiCollection'ın alt öğesi olmak için Sphere1'i Hiyerarşiye sürükleyin.
    • OrigamiCollection'ın alt öğesi olmak için Sphere2'yi Hiyerarşiye sürükleyin.
  • Hiyerarşi PanelindeDirectional Light nesnesine sağ tıklayın ve Sil'i seçin.
  • Hologramlar klasöründen Işıklar'ıHiyerarşi Paneli'nin köküne sürükleyin.
  • Hiyerarşide, OrigamiCollection'ı seçin.
  • Denetçide dönüştürme konumunu 0, -0,5, 2,0 olarak ayarlayın.
  • Hologramlarınızın önizlemesini görüntülemek için Unity'de Yürüt düğmesine basın.
  • Önizleme penceresinde Origami nesnelerini görmeniz gerekir.
  • Önizleme modunu durdurmak için Oynat'a ikinci kez basın.

Projeyi Unity'den Visual Studio'ya aktarma

  • Unity'de Dosya > Derleme Ayarları'nı seçin.

  • Platformlistesinden Evrensel Windows Platformu seçin ve Platform Değiştir'e tıklayın.

  • SDK'yıEvrensel 10 ve Derleme Türü'nüD3D olarak ayarlayın.

  • Unity C# Projelerini denetleyin.

  • Sahneyi eklemek için Açık Sahne Ekle'ye tıklayın.

  • Oluştur'a tıklayın.

  • Görüntülenen dosya gezgini penceresinde "Uygulama" adlı yeni bir Klasör oluşturun.

  • Uygulama Klasörü'ne tek tıklayın.

  • Klasör Seç'e basın.

  • Unity tamamlandığında bir Dosya Gezgini penceresi görüntülenir.

  • Uygulama klasörünü açın.

  • Aç (çift tıklayın) Origami.sln.

  • Visual Studio'daki üst araç çubuğunu kullanarak hedefi Hata Ayıklama'dan Yayın'a ve ARM'den X86'ya değiştirin.

  • Cihaz düğmesinin yanındaki oka tıklayın ve Wi-Fi üzerinden dağıtmak için Uzak Makine'yi seçin.

    • Adres'i HoloLens'inizin adı veya IP adresi olarak ayarlayın. Cihazınızın IP adresini bilmiyorsanız Ayarlar > Ağ & İnternet > Gelişmiş Seçenekleri'ne bakın veya Cortana'ya "Hey Cortana, IP adresim nedir?" sorusunu sorun.
    • HoloLens USB üzerinden takılıysa, bunun yerine USB üzerinden dağıtmak için Cihaz'ı seçebilirsiniz.
    • Kimlik Doğrulama Modu'nuEvrensel olarak bırakın.
    • Seç'e tıklayın
  • Hata Ayıklama Hata Ayıklama > Olmadan Başlat'a tıklayın veya Ctrl + F5 tuşlarına basın. Cihazınıza ilk kez dağıtılıyorsa, bunu Visual Studio ile eşleştirmeniz gerekir.

  • Origami projesi şimdi oluşturacak, HoloLens'inize dağıtacak ve çalıştıracak.

  • HoloLens'inizi takın ve yeni hologramlarınızı görmek için etrafa bakın.

Bölüm 2 - Bakış

Bu bölümde hologramlarınızla etkileşim kurmanın üç yolunun ilkini tanıtacağız: bakış.

Hedefler

  • Dünya kilitli bir imleç kullanarak bakışınızı görselleştirin.

Yönergeler

  • Unity projenize Geri dön ve hala açıksa Derleme Ayarları penceresini kapatın.
  • Proje panelindeHologramlar klasörünü seçin.
  • İmleç nesnesini kök düzeydeki Hiyerarşi paneline sürükleyin.
  • daha yakından bakmak için İmleç nesnesine çift tıklayın.
  • Proje panelinde Betikler klasörüne sağ tıklayın.
  • Oluştur alt menüsüne tıklayın.
  • C# Betiği'ne tıklayın.
  • Betiği WorldCursor olarak adlandırın. Not: Ad büyük/küçük harfe duyarlıdır. .cs uzantısını eklemeniz gerekmez.
  • Hiyerarşi panelindeİmleç nesnesini seçin.
  • WorldCursor betiğini Sürükleyip Denetçi paneline bırakın.
  • WorldCursor betiğine çift tıklayarak Visual Studio'da açın.
  • Bu kodu kopyalayıp WorldCursor.cs dosyasına yapıştırın ve Tümünü Kaydet'i seçin.
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;
        }
    }
}
  • Dosyayı Dosya > Derleme Ayarları'ndan yeniden oluşturun.
  • Daha önce HoloLens'inize dağıtmak için kullanılan Visual Studio çözümüne dönün.
  • İstendiğinde 'Tümünü Yeniden Yükle' seçeneğini belirleyin.
  • Hata Ayıkla -> Hata ayıklamadan Başlat'a tıklayın veya Ctrl + F5 tuşlarına basın.
  • Şimdi sahnenin çevresine bakın ve imlecin nesnelerin şekliyle nasıl etkileşime geçtiğini görün.

3. Bölüm - Hareketler

Bu bölümde hareketler için destek ekleyeceğiz. Kullanıcı bir kağıt küre seçtiğinde Unity'nin fizik motorunu kullanarak yerçekimini açarak kürenin düşmesini sağlayacağız.

Hedefler

  • Seç hareketiyle hologramlarınızı kontrol edin.

Yönergeler

Bir betik oluşturarak başlayacağız, ardından Seç hareketini algılayabiliriz.

  • Betikler klasöründe GazeGestureManager adlı bir betik oluşturun.
  • GazeGestureManager betiğini Hiyerarşideki OrigamiCollection nesnesine sürükleyin.
  • Visual Studio'da GazeGestureManager betiğini açın ve aşağıdaki kodu ekleyin:
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();
        }
    }
}
  • Scripts klasöründe bu kez SphereCommands adlı başka bir betik oluşturun.
  • Hiyerarşi görünümünde OrigamiCollection nesnesini genişletin.
  • SphereCommands betiğini Hiyerarşi panelindeki Sphere1 nesnesine sürükleyin.
  • SphereCommands betiğini Hiyerarşi panelindeki Sphere2 nesnesine sürükleyin.
  • Betiği düzenlemek üzere Visual Studio'da açın ve varsayılan kodu şu kodla değiştirin:
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;
        }
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens'inize dağıtın.
  • Kürelerden birine bak.
  • Seçme hareketini gerçekleştirin ve kürenin aşağıdaki yüzeye düşmesini watch.

Bölüm 4 - Ses

Bu bölümde iki sesli komut için destek ekleyeceğiz: bırakılan küreleri özgün konumlarına döndürmek için "Dünyayı sıfırla" ve kürenin düşmesini sağlamak için "Küreyi bırak".

Hedefler

  • Arka planda her zaman dinleyen sesli komutlar ekleyin.
  • Sesli komuta tepki veren bir hologram oluşturun.

Yönergeler

  • Betikler klasöründe SpeechManager adlı bir betik oluşturun.
  • SpeechManager betiğini Hiyerarşideki OrigamiCollection nesnesine sürükleyin
  • Visual Studio'da SpeechManager betiğini açın.
  • Bu kodu kopyalayıp SpeechManager.cs dosyasına yapıştırın ve Tümünü Kaydet::
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();
        }
    }
}
  • Visual Studio'da SphereCommands betiğini açın.
  • Betiği aşağıdaki gibi okuyacak şekilde güncelleştirin:
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();
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens'inize dağıtın.
  • Kürelerden birine bakın ve "Küreyi Bırak" deyin.
  • İlk konumlarına geri getirmek için "Dünyayı Sıfırla" deyin.

Bölüm 5 - Uzamsal ses

Bu bölümde uygulamaya müzik ekleyecek ve ardından belirli eylemlerde ses efektlerini tetikleyeceğiz. Seslere 3B alanda belirli bir konum vermek için uzamsal ses kullanacağız.

Hedefler

  • Dünyanızdaki hologramları duyun.

Yönergeler

  • Unity'de üst menüden Proje Ayarlarını > Düzenle Ses'i > seçin
  • Sağ taraftaki Denetçi Paneli'nde Spatializer Eklentisi ayarını bulun ve MS HRTF Spatializer'ı seçin.
  • Proje panelindeki Hologramlar klasöründen Ambience nesnesini Hiyerarşi Panelindeki OrigamiCollection nesnesine sürükleyin.
  • OrigamiCollection'ı seçin ve Denetçi panelinde Ses Kaynağı bileşenini bulun. Şu özellikleri değiştirin:
    • Spatialize özelliğini denetleyin.
    • Uyandığında Çal'ı kontrol edin.
    • Kaydırıcıyı sağa doğru sürükleyerek Spatial Blend'i3B olarak değiştirin. Kaydırıcıyı hareket ettirdiğinizde değer 0'dan 1'e değiştirilmelidir.
    • Loop özelliğini denetleyin.
    • 3B Ses Ayarları'nı genişletin ve Doppler Düzeyi için 0,1 girin.
    • Volume Rolloff değerini Logaritmik Dağıtım olarak ayarlayın.
    • Maksimum Uzaklık değerini 20 olarak ayarlayın.
  • Betikler klasöründe SphereSounds adlı bir betik oluşturun.
  • SphereSounds'ı Hiyerarşideki Sphere1 ve Sphere2 nesnelerine sürükleyip bırakın.
  • Visual Studio'da SphereSounds'u açın, aşağıdaki kodu güncelleştirin ve Tümünü Kaydet'i seçin.
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();
        }
    }
}
  • Betiği kaydedin ve Unity'ye dönün.
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens'inize dağıtın.
  • Sahne Alanı'ndan yaklaşın ve seslerin değiştiğini duymak için yan yana dönün.

6. Bölüm - Uzamsal eşleme

Şimdi oyun tahtasını gerçek dünyadaki gerçek bir nesneye yerleştirmek için uzamsal haritayı kullanacağız.

Hedefler

  • Gerçek dünyanızı sanal dünyaya getirin.
  • Hologramlarınızı sizin için en önemli oldukları yere yerleştirin.

Yönergeler

  • Unity'de Proje panelinde hologramlar klasörüne tıklayın.
  • Uzamsal Eşleme varlığını Hiyerarşinin köküne sürükleyin.
  • Hiyerarşide Uzamsal Eşleme nesnesine tıklayın.
  • Denetçi panelinde aşağıdaki özellikleri değiştirin:
    • Görsel Çizgiler Çiz kutusunu işaretleyin.
    • Malzeme Çiz'i bulun ve sağ taraftaki daireye tıklayın. Üstteki arama alanına "tel çerçeve" yazın. Sonuda tıklayın ve ardından pencereyi kapatın. Bunu yaptığınızda Malzeme Çiz değerinin Tel Çerçeve olarak ayarlanması gerekir.
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens'inize dağıtın.
  • Uygulama çalıştırıldığında bir tel çerçeve ağı gerçek dünyanızı kaplamaya başlar.
  • Yuvarlanan kürenin sahneden ve yere nasıl düşeceğini izleyin!

Şimdi size OrigamiCollection'ı yeni bir konuma nasıl taşıyabileceğinizi göstereceğiz:

  • Betikler klasöründe TapToPlaceParent adlı bir betik oluşturun.
  • Hiyerarşide, OrigamiCollection'ı genişletin ve Stage nesnesini seçin.
  • TapToPlaceParent betiğini Stage nesnesine sürükleyin.
  • Visual Studio'da TapToPlaceParent betiğini açın ve aşağıdaki şekilde güncelleştirin:
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;
            }
        }
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve dağıtın.
  • Artık oyunu belirli bir konuma bakarak, Seç hareketini kullanarak ve ardından yeni bir konuma geçerek ve Seçme hareketini yeniden kullanarak yerleştirebiliyor olmanız gerekir.

Bölüm 7 - Holografik eğlence

Hedefler

  • Holografik bir yeraltı dünyasının girişini ortaya çıkar.

Yönergeler

Şimdi size holografik yeraltı dünyasını nasıl ortaya çıkarabileceğinizi göstereceğiz:

  • Proje Paneli'ndeki Hologramlar klasöründen:
    • OrigamiCollection'ın alt öğesi olmak için Underworld'i Hiyerarşiye sürükleyin.
  • Betikler klasöründe HitTarget adlı bir betik oluşturun.
  • Hiyerarşide, OrigamiCollection'ı genişletin.
  • Aşama nesnesini genişletin ve Hedef nesneyi (mavi fan) seçin.
  • HitTarget betiğini Target nesnesine sürükleyin.
  • HitTarget betiğini Visual Studio'da açın ve aşağıdaki şekilde güncelleştirin:
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;
    }
}
  • Unity'de Hedef nesnesini seçin.
  • İsabet Hedefi bileşeninde iki ortak özellik görünür durumdadır ve sahnemizdeki nesnelere başvurması gerekir:
    • Hiyerarşi panelinden Yer AltıDünyası'nıİsabet Hedefi bileşenindeki YeraltıDünyası özelliğine sürükleyin.
    • Sahne Alanı'nıHiyerarşi panelinden İsabet Hedefi bileşenindeki Gizlenecek Nesne özelliğine sürükleyin.
  • Uygulamayı dışarı aktarın, derleyin ve dağıtın.
  • Origami Koleksiyonunu yere yerleştirin ve ardından küreyi bırakmak için Seçme hareketini kullanın.
  • Küre hedefe (mavi fan) çarptığında bir patlama meydana gelir. Koleksiyon gizlenecek ve yeraltı dünyasına bir delik açılacaktır.

Son

Ve bu öğreticinin sonu geldi!

Öğrendikleriniz:

  • Unity'de holografik uygulama oluşturma.
  • Bakış, hareket, ses, ses ve uzamsal haritalamadan yararlanma.
  • Visual Studio kullanarak uygulama oluşturma ve dağıtma.

Artık kendi holografik deneyiminizi oluşturmaya başlamaya hazırsınız!

Ayrıca bkz.