Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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!