HoloLens (1. generacja) Basics 101: Complete project with device (Podstawowe informacje o urządzeniu)
Ważne
Samouczki Mixed Reality Academy zostały zaprojektowane z myślą o urządzeniach HoloLens (1. generacji), Unity 2017 i Mixed Reality immersywnych zestawów słuchawkowych. W związku z tym uważamy, że ważne jest pozostawienie tych samouczków w miejscu dla deweloperów, którzy nadal szukają wskazówek dotyczących opracowywania dla tych urządzeń. Te samouczki nie zostaną zaktualizowane przy użyciu najnowszych zestawów narzędzi ani interakcji używanych do HoloLens 2 i mogą nie być zgodne z nowszymi wersjami aparatu Unity. Będą one utrzymywane w celu kontynuowania pracy na obsługiwanych urządzeniach. Opublikowano nową serię samouczków dla HoloLens 2.
Ten samouczek przeprowadzi Cię przez kompletny projekt wbudowany w aparat Unity, który demonstruje podstawowe funkcje Windows Mixed Reality na urządzeniu HoloLens, w tym spojrzenie, gesty, dane wejściowe głosu, dźwięk przestrzenny i mapowanie przestrzenne.
Ukończenie tego samouczka potrwa około 1 godziny.
Obsługa urządzeń
Kurs | HoloLens | Immersyjne zestawy nagłowne |
---|---|---|
MR Basics 101: Complete project with device (Podstawy mr 101: kompletny projekt z urządzeniem) | ✔️ |
Przed rozpoczęciem
Wymagania wstępne
- Komputer Windows 10 skonfigurowany z zainstalowanymi odpowiednimi narzędziami.
- Urządzenie HoloLens skonfigurowane do programowania.
Pliki projektu
- Pobierz pliki wymagane przez projekt. Wymaga aparatu Unity 2017.2 lub nowszego.
- Jeśli nadal potrzebujesz obsługi aparatu Unity 5.6, skorzystaj z tej wersji.
- Jeśli nadal potrzebujesz obsługi aparatu Unity 5.5, skorzystaj z tej wersji.
- Jeśli nadal potrzebujesz obsługi aparatu Unity 5.4, skorzystaj z tej wersji.
- Cofnij archiwizowanie plików na pulpicie lub innych łatwych w dotarciu do lokalizacji. Zachowaj nazwę folderu jako Origami.
Uwaga
Jeśli chcesz przejrzeć kod źródłowy przed pobraniem, jest on dostępny w witrynie GitHub.
Rozdział 1 — Świat "Holo"
W tym rozdziale skonfigurujemy nasz pierwszy projekt aparatu Unity i przejdziemy przez proces kompilacji i wdrażania.
Cele
- Konfigurowanie aparatu Unity na potrzeby programowania holograficznego.
- Utwórz hologram.
- Zobacz wykonany hologram.
Instrukcje
- Uruchom aparat Unity.
- Wybierz pozycję Otwórz.
- Wprowadź lokalizację jako folder Origami , który wcześniej nie został zarchiwizowany.
- Wybierz pozycję Origami i kliknij pozycję Wybierz folder.
- Ponieważ projekt Origami nie zawiera sceny, zapisz pustą scenę domyślną w nowym pliku przy użyciu: Zapiszscenęjako pliku / .
- Nazwij nową scenę Origami i naciśnij przycisk Zapisz .
Konfigurowanie głównej kamery wirtualnej
- W Panelu hierarchii wybierz pozycję Aparat główny.
- W inspektorze ustaw pozycję przekształcenia na 0,0,0.
- Znajdź właściwość Clear Flags i zmień listę rozwijaną z Skybox na Kolor stały.
- Kliknij pole Tło , aby otworzyć selektor kolorów.
- Ustaw wartości R, G, B i A na 0.
Konfigurowanie sceny
- W panelu Hierarchy (Hierarchia) kliknij pozycję Create and Create Empty (Utwórz i utwórz puste).
- Kliknij prawym przyciskiem myszy nowy obiekt GameObject i wybierz polecenie Zmień nazwę. Zmień nazwę obiektu GameObject na OrigamiCollection.
- W folderze Holograms w panelu projektu (rozwiń węzeł Zasoby i wybierz pozycję Hologramy lub kliknij dwukrotnie folder Hologramy w panelu projektu):
- Przeciągnij element Stage do hierarchii, aby być elementem podrzędnym kolekcji OrigamiCollection.
- Przeciągnij element Sphere1 do hierarchii, aby być elementem podrzędnym origamiCollection.
- Przeciągnij element Sphere2 do hierarchii, aby być elementem podrzędnym origamiCollection.
- Kliknij prawym przyciskiem myszy obiekt Directional Light w panelu hierarchii i wybierz polecenie Usuń.
- Z folderu Holograms przeciągnij pozycję Lights do katalogu głównego panelu hierarchii.
- W obszarze Hierarchy (Hierarchia) wybierz pozycję OrigamiCollection.
- W inspektorze ustaw pozycję przekształcania na 0, -0,5, 2,0.
- Naciśnij przycisk Odtwórz w a unity, aby wyświetlić podgląd hologramów.
- Obiekty Origami powinny być widoczne w oknie podglądu.
- Naciśnij pozycję Odtwórz po raz drugi, aby zatrzymać tryb podglądu.
Eksportowanie projektu z aparatu Unity do programu Visual Studio
W akrocie Unity wybierz pozycję Ustawienia kompilacji pliku>.
Wybierz platforma uniwersalna systemu Windows na liście Platforma, a następnie kliknij pozycję Przełącz platformę.
Ustaw zestaw SDK na wartość Universal 10 , a typ kompilacji na D3D.
Sprawdź projekty języka C# aparatu Unity.
Kliknij pozycję Dodaj otwarte sceny , aby dodać scenę.
Kliknij pozycję Kompiluj.
W wyświetlonym oknie Eksploratora plików utwórz nowy folder o nazwie "Aplikacja".
Jednym kliknięciem folderu aplikacji.
Naciśnij pozycję Wybierz folder.
Po zakończeniu działania aparatu Unity zostanie wyświetlone okno Eksplorator plików.
Otwórz folder Aplikacja .
Otwórz (kliknij dwukrotnie) Origami.sln.
Za pomocą górnego paska narzędzi w programie Visual Studio zmień element docelowy z Debuguj na Wydanie i z ARM na X86.
Kliknij strzałkę obok przycisku Urządzenie, a następnie wybierz pozycję Maszyna zdalna , aby wdrożyć za pośrednictwem sieci Wi-Fi.
- Ustaw wartość pola Adres na nazwę lub adres IP urządzenia HoloLens. Jeśli nie znasz adresu IP urządzenia, zapoznaj się z tematem Ustawienia > Sieć & Opcje zaawansowane internetu > lub zapytaj Cortanę "Hej Cortana, jaki jest mój adres IP?"
- Jeśli urządzenie HoloLens jest podłączone za pośrednictwem portu USB, możesz zamiast tego wybrać pozycję Urządzenie do wdrożenia za pośrednictwem portu USB.
- Pozostaw tryb uwierzytelniania ustawiony na wartość Universal.
- Kliknij pozycję Wybierz
Kliknij przycisk Rozpocznij debugowanie > bez debugowania lub naciśnij klawisze Ctrl + F5. Jeśli jest to pierwsze wdrożenie na urządzeniu, konieczne będzie sparowanie go z programem Visual Studio.
Projekt Origami będzie teraz kompilować, wdrażać go na urządzeniu HoloLens, a następnie uruchamiać.
Umieść urządzenie HoloLens i rozejrzyj się, aby zobaczyć nowe hologramy.
Rozdział 2 — Spojrzenie
W tym rozdziale przedstawimy pierwsze z trzech sposobów interakcji z hologramami - spojrzenie.
Cele
- Wizualizowanie spojrzenia przy użyciu kursora zablokowanego na świecie.
Instrukcje
- Wstecz do projektu aparatu Unity i zamknij okno Ustawienia kompilacji, jeśli jest ono nadal otwarte.
- Wybierz folder Hologramy w panelu Projekt.
- Przeciągnij obiekt Cursor do panelu Hierarchy na poziomie głównym.
- Kliknij dwukrotnie obiekt Cursor , aby przyjrzeć się temu obiektowi.
- Kliknij prawym przyciskiem myszy folder Scripts (Skrypty ) na panelu Project (Projekt).
- Kliknij podmenu Utwórz .
- Wybierz pozycję Skrypt języka C#.
- Nadaj skryptowi nazwę WorldCursor. Uwaga: w nazwie jest rozróżniana wielkość liter. Nie trzeba dodawać rozszerzenia cs.
- Wybierz obiekt Kursor w panelu Hierarchy (Hierarchia).
- Przeciągnij i upuść skrypt WorldCursor do panelu Inspector (Inspektor).
- Kliknij dwukrotnie skrypt WorldCursor , aby otworzyć go w programie Visual Studio.
- Skopiuj i wklej ten kod do pliku WorldCursor.cs i zapisz wszystko.
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;
}
}
}
- Ponownie skompiluj aplikację z ustawień kompilacji pliku>.
- Wróć do rozwiązania programu Visual Studio użytego wcześniej do wdrożenia na urządzeniu HoloLens.
- Po wyświetleniu monitu wybierz pozycję "Załaduj ponownie wszystko".
- Kliknij pozycję Debuguj —> rozpocznij bez debugowania lub naciśnij klawisze Ctrl + F5.
- Teraz przyjrzyj się scenie i zwróć uwagę na sposób interakcji kursora z kształtem obiektów.
Rozdział 3 — Gesty
W tym rozdziale dodamy obsługę gestów. Gdy użytkownik wybierze kulę papierową, sprawimy, że kula spadnie, włączając grawitację przy użyciu aparatu fizyki aparatu Unity.
Cele
- Kontroluj hologramy za pomocą gestu Wybierz.
Instrukcje
Zaczniemy od utworzenia skryptu, a następnie możemy wykryć gest Select.
- W folderze Scripts utwórz skrypt o nazwie GazeGestureManager.
- Przeciągnij skrypt GazeGestureManager do obiektu OrigamiCollection w hierarchii.
- Otwórz skrypt GazeGestureManager w programie Visual Studio i dodaj następujący kod:
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();
}
}
}
- Utwórz inny skrypt w folderze Skrypty, tym razem o nazwie SphereCommands.
- Rozwiń obiekt OrigamiCollection w widoku Hierarchii.
- Przeciągnij skrypt SphereCommands do obiektu Sphere1 na panelu Hierarchia.
- Przeciągnij skrypt SphereCommands do obiektu Sphere2 na panelu Hierarchia.
- Otwórz skrypt w programie Visual Studio do edycji i zastąp domyślny kod następującym kodem:
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;
}
}
}
- Eksportowanie, kompilowanie i wdrażanie aplikacji na urządzeniu HoloLens.
- Spójrz na jedną z kul.
- Wykonaj gest zaznaczania i watch upuścić sferę na powierzchni poniżej.
Rozdział 4 — Głos
W tym rozdziale dodamy obsługę dwóch poleceń głosowych: "Resetuj świat", aby przywrócić porzucone kule do ich oryginalnej lokalizacji i "Drop sphere", aby upaść sferę.
Cele
- Dodaj polecenia głosowe, które zawsze nasłuchują w tle.
- Utwórz hologram reagujący na polecenie głosowe.
Instrukcje
- W folderze Scripts utwórz skrypt o nazwie SpeechManager.
- Przeciągnij skrypt SpeechManager do obiektu OrigamiCollection w hierarchii
- Otwórz skrypt SpeechManager w programie Visual Studio.
- Skopiuj i wklej ten kod do pliku SpeechManager.cs i zapisz wszystko:
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();
}
}
}
- Otwórz skrypt SphereCommands w programie Visual Studio.
- Zaktualizuj skrypt w następujący sposób:
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();
}
}
- Eksportowanie, kompilowanie i wdrażanie aplikacji na urządzeniu HoloLens.
- Spójrz na jedną z kul i powiedz "Drop Sphere".
- Powiedz "Resetuj świat", aby przywrócić je do swoich początkowych pozycji.
Rozdział 5 . Dźwięk przestrzenny
W tym rozdziale dodamy muzykę do aplikacji, a następnie wyzwolimy efekty dźwiękowe dla niektórych akcji. Będziemy używać dźwięku przestrzennego do nadawania dźwiękom określonej lokalizacji w przestrzeni 3D.
Cele
- Posłuchaj hologramów na świecie.
Instrukcje
- W afiszacie Unity wybierz pozycję z górnego menu Edytuj > dźwięk ustawień > projektu
- W Panelu inspektora po prawej stronie znajdź ustawienie Wtyczka spatializer i wybierz pozycję MS HRTF Spatializer.
- W folderze Holograms na panelu Projekt przeciągnij obiekt Zogrania na obiekt OrigamiCollection w panelu hierarchii.
- Wybierz pozycję OrigamiCollection i znajdź składnik Źródło dźwięku w panelu Inspector (Inspektor). Zmień następujące właściwości:
- Sprawdź właściwość Spatialize .
- Sprawdź pozycję Odtwórz na jawie.
- Zmień aplikację Spatial Blend na 3D , przeciągając suwak w prawo. Wartość powinna zostać zmieniona z 0 na 1 po przeniesieniu suwaka.
- Sprawdź właściwość Loop .
- Rozwiń węzeł Ustawienia dźwięku 3D i wprowadź wartość 0.1 w polu Poziom dopplera.
- Ustaw opcję Rolloff woluminu na wartość Logarithmic Rolloff.
- Ustaw wartość Maksymalna odległość na 20.
- W folderze Scripts utwórz skrypt o nazwie SphereSounds.
- Przeciągnij i upuść obiekty SphereSounds do obiektów Sphere1 i Sphere2 w hierarchii.
- Open SphereSounds w programie Visual Studio zaktualizuj następujący kod i zapisz wszystko.
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();
}
}
}
- Zapisz skrypt i wróć do aparatu Unity.
- Eksportowanie, kompilowanie i wdrażanie aplikacji na urządzeniu HoloLens.
- Przenieś się bliżej i dalej od sceny i skręć w bok, aby usłyszeć zmiany dźwięków.
Rozdział 6 — Mapowanie przestrzenne
Teraz użyjemy mapowania przestrzennego , aby umieścić planszę gry na prawdziwym obiekcie w świecie rzeczywistym.
Cele
- Przynieś swój rzeczywisty świat do świata wirtualnego.
- Umieść swoje hologramy, gdzie mają największe znaczenie dla Ciebie.
Instrukcje
- W środowisku Unity kliknij folder Hologramy w panelu Projekt.
- Przeciągnij zasób mapowania przestrzennego do katalogu głównego hierarchii.
- Kliknij obiekt Mapowanie przestrzenne w hierarchii.
- W panelu Inspector (Inspektor) zmień następujące właściwości:
- Zaznacz pole Rysuj siatki wizualne .
- Znajdź pozycję Rysuj materiał i kliknij okrąg po prawej stronie. Wpisz "wireframe" w polu wyszukiwania u góry. Kliknij wynik, a następnie zamknij okno. Gdy to zrobisz, wartość Rysuj materiał powinna zostać ustawiona na Wartość Szkielet.
- Eksportowanie, kompilowanie i wdrażanie aplikacji na urządzeniu HoloLens.
- Po uruchomieniu aplikacji siatka szkieletowa nakłada świat rzeczywisty.
- Zobacz, jak kula tocząca się spadnie ze sceny i na podłogę!
Teraz pokażemy, jak przenieść origamiCollection do nowej lokalizacji:
- W folderze Scripts utwórz skrypt o nazwie TapToPlaceParent.
- W obszarze Hierarchy rozwiń obiekt OrigamiCollection i wybierz obiekt Stage .
- Przeciągnij skrypt TapToPlaceParent na obiekt Stage.
- Otwórz skrypt TapToPlaceParent w programie Visual Studio i zaktualizuj go tak, aby był następujący:
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;
}
}
}
}
- Eksportowanie, kompilowanie i wdrażanie aplikacji.
- Teraz powinno być możliwe umieszczenie gry w określonej lokalizacji, patrząc na nią, za pomocą gestu Wybierz, a następnie przechodząc do nowej lokalizacji, a następnie używając gestu Select ponownie.
Rozdział 7 - Zabawa holograficzne
Cele
- Odsłaniaj wejście do holograficznego świata.
Instrukcje
Teraz pokażemy Ci, jak odkryć holograficzny świat:
- Z folderu Holograms w panelu projektu:
- Przeciągnij element Underworld do hierarchii, aby być dzieckiem OrigamiCollection.
- W folderze Scripts utwórz skrypt o nazwie HitTarget.
- W hierarchii rozwiń węzeł OrigamiCollection.
- Rozwiń obiekt Stage i wybierz obiekt Docelowy (niebieski wentylator).
- Przeciągnij skrypt HitTarget na obiekt Target .
- Otwórz skrypt HitTarget w programie Visual Studio i zaktualizuj go tak, aby był następujący:
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;
}
}
- W środowisku Unity wybierz obiekt Docelowy .
- Dwie właściwości publiczne są teraz widoczne w składniku Hit Target i muszą odwoływać się do obiektów w naszej scenie:
- Przeciągnij element Underworld z panelu Hierarchia do właściwości Underworld w składniku Hit Target .
- Przeciągnij pozycję Etap z panelu Hierarchia do obiektu, aby ukryć właściwość w składniku Hit Target .
- Eksportowanie, kompilowanie i wdrażanie aplikacji.
- Umieść kolekcję Origami na podłodze, a następnie użyj gestu Wybierz, aby upuść sferę.
- Gdy kula uderza w cel (niebieski wentylator), nastąpi eksplozja. Kolekcja będzie ukryta, a pojawi się dziura do underworld.
Koniec
I to koniec tego samouczka!
Wiesz teraz:
- Jak utworzyć aplikację holograficzną w środowisku Unity.
- Jak korzystać z spojrzenia, gestu, głosu, dźwięku i mapowania przestrzennego.
- Jak skompilować i wdrożyć aplikację przy użyciu programu Visual Studio.
Teraz możesz rozpocząć tworzenie własnego środowiska holograficznego!