Hace varios años, la realidad virtual para el consumidor medio seguía siendo el reino de la ciencia ficción. Esto cambió con el lanzamiento de Samsung Gear VR en 2015. Ahora, si usted es dueño de un Samsung Galaxy Note o teléfono inteligente, se puede disfrutar de juegos de realidad virtual y experiencias con un $ 50- $ 100 Gear VR auricular, impulsado por el teléfono. Tome un paso más allá, e incluso se puede empezar a construir sus propios mundos de realidad virtual.

En este tutorial, le mostrará cómo empezar con el desarrollo de engranajes VR usando la plataforma Unity 3D. 90% de los juegos de engranajes de VR se hacen con la Unidad. Dado que ya hay muchos tutoriales Unidad 3D disponibles, incluyendo los que están en juego Dev Academia, no voy a entrar en detalles acerca de la unidad. Sin embargo, voy a incluir algunos conceptos básicos para aquellos de ustedes que están comenzando sus aventuras desarrollo del juego.

Tabla de contenidos
convertirse en un desarrollador de juegos vr profesional con la unidad

Pre-Order The Complete Realidad Virtual desarrollo del juego con Unity y aprender a crear juegos y experiencias de inmersión mediante la construcción de 10 juegos de realidad virtual. El curso asume ninguna experiencia previa Unidad o VR – Te enseñaremos C #, la Unidad y la programación 3D de la tierra-para arriba

comprobarlo en Zenva Academia y obtener acceso temprano!

Descargas

Puede descargar el código fuente del proyecto y la unidad aquí.

Requisitos de hardware

Para seguir adelante, usted necesitará el siguiente hardware:


  • A Samsung Galaxy Note 5, S6, S6 Edge, Edge + S6, S7, S7 Edge o Nota 7 teléfono inteligente.
  • A Samsung Gear VR auricular.
  • Un PC con Windows 7 o posterior, o un Mac con OS X 10.8 +.

    A pesar de que muchos tutoriales se centran en Windows, que utiliza un MacBook Pro para desarrollar el código para este tutorial.

    En este tutorial, no se necesita un controlador. Si desea obtener el máximo rendimiento de algunos juegos de realidad virtual existentes, es probable que desee obtener uno, de todos modos.

    Configuración del Software

    En el ordenador, tendrá que instalar el Java Development Kit (JDK), el SDK de Android, Unidad 5, y el tiempo de ejecución de Oculus.

    A http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html para descargar la última JDK para su plataforma. El SDK de Android está disponible en https://developer.android.com/studio/index.html#downloads. Esta página de descarga ocupa un lugar destacado Android de estudio, el IDE oficial de Android, que agrupa el SDK de Android. Si sólo desea que el SDK, puede encontrar las descargas del SDK independientes en la parte inferior de la página. El SDK por sí sola es suficiente para este tutorial.


    Una vez que haya instalado el SDK, la prueba de que se puede ejecutar el comando adb. Es posible que tenga que añadir el directorio donde se ha instalado el SDK a la ruta del sistema. Este comando será útil en los próximos pasos para obtener su ID de dispositivo.

    La unidad se puede descargar desde https://unity3d.com/get-unity/download. Estoy utilizando la Unidad 5.5.2f1 personal, la última edición libre disponible en el momento de la escritura.

    El tiempo de ejecución Oculus para Mac está disponible en https://developer.oculus.com/downloads/package/oculus-runtime-for-os-x/0.5.0.1-beta/. El tiempo de ejecución de Windows está disponible en https://developer.oculus.com/downloads/package/oculus-runtime-for-windows/0.8.0.0-beta/.

    En el teléfono, tendrá que seguir las instrucciones de Samsung para instalar el Oculus principal de la aplicación, que se debería haber hecho al configurar su engranaje VR. Óculo Inicio no está disponible en la tienda de Google Play – en cambio, lo instala cuando se utiliza el engranaje VR por primera vez. Este proceso también se creará una cuenta de Oculus.

    También tendrá que activar el modo de programador en su teléfono. En el teléfono, toca el icono de Ajustes. Desplácese hacia abajo y seleccione “Acerca del dispositivo”. Si no ve “Opciones de desarrollador,” Tap siete veces en “Número de compilación.”

    Por último, tendrá que generar un archivo de firma Oculus, o OSIG. El archivo OSIG permite su aplicación a usos de bajo nivel de Oculus funciones. Siga las instrucciones en https://dashboard.oculus.com/tools/osig-generator/ para encontrar su ID de dispositivo y generar un archivo. Descargar el archivo resultante, y guardar ITIN un lugar seguro. Al iniciar un proyecto de realidad virtual, tendrá que copiar este archivo a los Activos / plugins / carpeta / Android activos en su proyecto.

    Su Primer Proyecto

    get Vamos comenzó en un proyecto VR sencilla.

    En primer lugar, crear un nuevo proyecto. proyectos de realidad virtual se crean los mismos que los proyectos regulares. Abrir Unidad, haga clic en “Nuevo”, y complete el nombre del proyecto y el directorio donde se creará el directorio del proyecto. Asegúrese de seleccionar “3D”. A continuación, haga clic en el botón “Crear proyecto”.


    En la siguiente ventana, verá tanto la pestaña Jerarquía y la vista de escena. Tenga en cuenta que la cámara principal y la luz direccional ya se han creado para ti.

    Guardar la escena (Archivo-> Guardar escena) y elegir un nombre para su escena. Sólo estoy usando el nombre de “escena”. A continuación, haga clic en “Cámara principal” en la vista de jerarquía. En la derecha de la ventana, haga clic en “inspector” para activar la pestaña “inspector”. En “Transform”, cambiar la posición a 0, 0, 0. Esto centrará la cámara cambiando sus coordenadas (0, 0, 0).


    Ahora, vamos a tratar de crear una forma. Haz clic derecho en la ventana de jerarquía (a la izquierda), y seleccione “Objeto 3D -> Cápsula”. Una cápsula debe aparecer en la ventana de escena. Para previsualizar la escena se verá, haga clic en la pestaña “juego” para que aparezca la ventana de juego.

    Al igual que la cámara, que se puede mover la cápsula cambiando su posición en el Inspector. También podemos mover la cápsula y otros objetos, incluyendo la cámara y la luz, utilizando un método diferente.

    En la esquina superior izquierda, haga clic en el botón que se ve como dos flechas perpendiculares:  . Ahora intente hacer clic en la cápsula. Cuando el botón del ratón se mantiene presionado, se debe un conjunto de ejes tridimensionales aparecen superpuestas en la cápsula. Para mover la cápsula a lo largo de un eje, haga clic en el eje y arrastre en la dirección que desee. También puede mover la cápsula en las tres dimensiones a la vez arrastrando su centro, pero esto es menos precisa. Es menos confuso para mí para hacer clic en un eje.

    Aviso a los otros tres botones al lado del botón de transformar. Con estos botones, puede girar y escalar objetos. Trate de jugar con estos botones y ver cómo afectan a la cápsula y la posición, rotación y escala campos en el Inspector.

    Para crear y ejecutar el proyecto, el enchufe en el teléfono inteligente Samsung. Asegúrese de que se selecciona la depuración USB. En Unidad, seleccione Archivo -> Construir y Ejecutar. En la ventana de configuración de generación, asegúrese de que Android se ha seleccionado como la plataforma. Si no lo está, haga clic en Android y haga clic en “Cambiar la plataforma.” En las escenas “para construir” ventana, seleccione el nombre de la escena que ha guardado. A continuación, haga clic en Generar y ejecutar. Se le preguntará si desea guardar un archivo APK de su proyecto. He creado un directorio llamado “bin /” en mi directorio del proyecto y salvó mi archivo APK allí.

    El teléfono le pedirá que insertarlo en el auricular engranaje VR. Cuando lo hace, debería ver una escena con una cápsula. Si la cápsula no es inmediatamente visible, trate de darse la vuelta. Tenga en cuenta que estás en una escena completamente tridimensional.

    Modo desarrollador

    Ahora que ya ejecuta una aplicación con su propio archivo OSIG en su teléfono, puede utilizar una forma más fácil para probar aplicaciones de realidad virtual. En lugar de desconectar el teléfono, insertándolo en su dispositivo de realidad virtual, y poner el tipo de auriculares cada vez que se desea probar una aplicación, puede ejecutar su aplicación sin el auricular. Para ello, vaya a Configuración del teléfono. Seleccione Aplicaciones, a continuación, el Gestor de aplicaciones. Desplácese hacia abajo y seleccione Gear Servicio VR. Seleccione Almacenamiento y toque en VR Servicio Versión varias veces hasta que las “Opciones de desarrollo” elementos aparecen. Cuando se desea probar la aplicación, asegúrese de que “el modo de desarrollador” se alterna sucesivamente.

    Cuando se construye y ejecuta una aplicación de unidad con el modo de programador engranaje VR en adelante, la aplicación se iniciará automáticamente y sin que le pide que inserte el teléfono en el dispositivo de realidad virtual. Verá dos imágenes, cada una correspondiente a una de las lentes de realidad virtual engranaje.

    Adición de color

    Ahora que podemos ejecutar aplicaciones fácilmente, vamos a hacer nuestro proyecto un poco más divertido. En primer lugar, cambiar el nombre de la cápsula para RedPill. Haga clic derecho sobre “cápsula” en la ventana de jerarquía y seleccione “Cambiar nombre”. A continuación, vamos a tratar de cambiar la apariencia de nuestra cápsula. Para ello en la unidad, tenemos que crear un material y aplicarlo a la cápsula.

    Haga clic activos en la lista de carpetas y seleccione Crear carpeta para crear una nueva carpeta. Materiales llamarlo. Haz clic derecho, seleccione Crear y elegir materiales. Cuando aparezca el icono, cambie su nombre a Red. En la pestaña Inspector, haga clic en el marcador junto a la palabra albedo para abrir una ventana de selector de color. Haga clic en un tono de rojo y cerrar la ventana. Ahora la muestra de albedo debe ser de color rojo, y el icono para este material debe cambiar a rojo.

    para aplicar este material a la cápsula, arrastre su icono sobre la cápsula en la ventana de escena.

    Para hacer que nuestra cápsula roja más dinámica, vamos a tratar de hacer que gire.

    En la pestaña inspector, desplazarse hasta la parte inferior y haga clic en “Agregar componente”. Vaya a la parte inferior del menú y seleccione “Nuevo guión.” Introduzca un nombre para el guión – Estoy usando CapsuleController – y elegir sostenido de C como lenguaje. Una sección de la etiqueta “Cápsula Controller (Script)” aparecerá en la pestaña Inspector.

    Haga clic en el icono de engranaje en la parte superior derecha de esta sección. Resalte y haga clic en “Editar script” en el menú emergente. Esto debería abrir una ventana MonoDevelop. MonoDevelop es un IDE de C # que se instala automáticamente con la Unidad.

    Vas a ver que MonoDevelop ha abierto automáticamente un archivo llamado CapsuleController. cs. Este archivo define una clase llamada CapsuleController que hereda de MonoBehaviour y contiene dos métodos, Start () y update (). Sólo estaremos modificando Update (), que se llama una vez por cuadro. Este es el código que queremos:
    CapsuleController clase pública: MonoBehaviour {float DEFAULT_ROTATION_SPEED private static = 50f; // Hacer rotationSpeed ​​y rotationAxis pública permite // modificar sus valores en el panel Inspector. flotación pública rotationSpeed ​​= DEFAULT_ROTATION_SPEED; pública Vector3 rotationAxis = Vector3.right; // Usar esto para la inicialización de inicio void () {} // actualización se llama una vez por cuadro de actualización de vacío () {float = ángulo rotationSpeed ​​* Time.deltaTime; transform.rotate (rotationAxis * ángulo, Space.World); }} 1234567891011121314151617publicclassCapsuleController: MonoBehaviour {privatestaticfloatDEFAULT_ROTATION_SPEED = 50f; // Hacer rotationSpeed ​​y rotationAxis pública permite // modificar sus valores en el Inspector panel.publicfloatrotationSpeed ​​= DEFAULT_ROTATION_SPEED; publicVector3 rotationAxis = Vector3.right; // Usar esto para initializationvoidStart () {} / / actualización se llama una vez por framevoidUpdate () {floatangle = rotationSpeed ​​* Time.deltaTime; transform.rotate (rotationAxis * ángulo, Space.World);}}

    Cada marco, queremos que la cápsula en rotación por un ángulo fijo alrededor el eje z. Este ángulo es producto de una velocidad y la cantidad de tiempo para una trama leer, Time.deltatime. Puede leer más sobre Time.deltatime en https://docs.unity3d.com/ScriptReference/Time-deltaTime.html. La velocidad de rotación de 50f funciona bien para una rotación lenta. (La ‘f’ significa que este es un número de coma flotante.) La variable rotationAxis define el eje alrededor del cual girará la cápsula. Vector3.right es la del eje z, lo que resultará en una rotación vertical. Al hacer que miembros de la clase pública rotationSpeed ​​y rotationAxis, seremos capaces de modificar sus valores en el panel Inspector más tarde.

    Después de guardar el archivo en C # MonoDevelop, volver a la ventana de la Unidad. En la parte superior central de la ventana, debería ver los botones que parecen reproducir y pausar botones típicos. Haga clic en el botón de reproducción (el triángulo que apunta hacia la derecha). La vista cambiará automáticamente a la ficha del juego, y verá su cápsula giratoria si está dentro de visión de la cámara.


    Atrás Cambiar a la pestaña de escena. A continuación, la cápsula está girando, también. Para detener la reproducción de la escena y restablecer la vista, haga clic en el botón de reproducción de nuevo. Trate de enchufar su teléfono y seleccione Archivo-> generar y ejecutar para ver su aplicación en la realidad virtual.

    Adición Interacción

    Ahora vamos a tratar de hacer la pastilla roja interactiva. En los juegos tradicionales, que interactúan con los objetos que utilizan un teclado, un ratón o controlador. En VR, su propio movimiento de la cabeza puede servir como un controlador. En el resto de este tutorial, vamos a hacer la parada píldora roja que gira cuando sus restos mirada en ella.

    Para que sea más fácil en el que está buscando, vamos a adjuntar una retícula, o una cruz de orientación, a la cámara principal. La retícula aparece como círculo que muestra dónde se dirige su mirada. También vamos a adjuntamos un objeto lanzador de rayos a la cámara que va a determinar si el punto de mira se cruza con un objeto.

    En lugar de construir todo esto desde el principio, vamos a utilizar VR de la Unidad activos estándar y muestras de VR, que se proporcionan en las muestras de VR lían disponible en la Unidad de activos tienda. Los activos que necesita están en el código fuente de este tutorial. Si estás siguiendo a lo largo de la construcción de su propio proyecto, copiar elementos / VRSampleScenes y Activos / VRStandardAssets desde el código fuente incluido en el directorio de los activos de su proyecto. Su punto de vista del proyecto en la Unidad se actualizará con estos activos una vez que se copian.


    Activos / VRSampleScenes / Prefabs / Utilidades contiene una prefabricada para la MainCamera que ya tiene el retículo. Vamos a sustituir el MainCamera defecto con una instancia de esta prefabricada. En la ventana de su jerarquía, haga clic derecho y retire la MainCamera defecto. Copiar el prefabricada MainCamera desde la ventana del proyecto a la ventana Jerarquía. Ampliar el MainCamera haciendo clic en la pequeña flecha al lado de él para explorar lo que acaba de añadir.


    Cuando se resalta MainCamera, los espectáculos ventana de inspección lo que las secuencias de comandos están unidos a él.


    VREyeRayCaster es una clase que atrae a un rayo que emana de las intersecciones de la cámara y detecta entre el rayo y las instancias de la clase VRInteractiveItem. objetos de juegos interactivos deben contener una instancia de VRInteractiveItem. Si se detecta una intersección, Más del VRInteractiveItem () se llama al método.

    VRCameraUI define las propiedades de la tela VRCameraUI. Retículo propiedades define los de la imagen del retículo, y VRInput manijas insumos como golpes y clics. Nos preocupa únicamente con clics en este proyecto.

    anidados debajo MainCamera es un llamado lona VRCameraUI. En la Unidad, un lienzo es un objeto de juego que contiene elementos de interfaz de usuario. Cuando VRCameraUI se resalta en la ventana de jerarquía, el lienzo aparece como un rectángulo en la parte frontal de la cámara en la ventana de juego. Debajo VRCameraUI, encontrará una imagen llamada GUIReticle. En Unity, una imagen es un control de interfaz de usuario que muestra una imagen de un archivo. Si el campo “Fuente de la imagen” en el Inspector está vacía, haga clic en el pequeño icono al lado del campo y seleccione GUIReticle. Esta es una imagen incluida en los Activos / VRSamples / Texturas carpeta.


    Por último, tenemos que añadir un colisionador de la RedPill y hacer un RedPill VRInteractiveItem. Haga clic en RedPill en la ventana de la Jerarquía. En el Inspector, haga clic en “Agregar componente”. Seleccione Física, a continuación, la cápsula Colisionador. En la ventana de proyecto, seleccione Assets-> VRStandardAssets-> Scripts-> VRInteractiveItem, y arrastrar a la parte inferior del Inspector. Esto añadirá el guión VRInteractiveItem a RedPill.


    miembros de datos de VRInteractiveItem incluyen variables de eventos llamados OnOver y OnOut y métodos llamados Over () y hacia fuera (). Cuando el componente VREyeRayCaster del MainCamera detecta un VRInteractiveItem, llama a la VRInteractiveItem.Over (), que llama VRInteractiveItem.OnOver como una función.
    // Estos son los fragmentos de código de VRInteractiveItem que son importantes para esta clase // project.public VRInteractiveItem: MonoBehaviour {evento público Acción OnOver; // llama cuando la mirada se mueve más de este evento público objeto Action OnOut; // llama cuando las hojas gaze este objeto public bool ISOVER {get {return m_IsOver; } // es la mirada sobre la actualidad este objeto? } // El debajo funciones son llamados por la VREyeRaycaster cuando se detecta el // de entrada adecuado. // A su vez, llamar a los eventos apropiados deberían tener suscriptores. Durante public void () {debug.log ( «VRInteractiveItem :: Over»); m_IsOver = true; if (! OnOver = null) OnOver (); } Public void hacia fuera () {m_IsOver = false; si (OnOut! = null) OnOut (); }} // 123456789101112131415161718192021222324252627282930313233 Estos son los fragmentos de código de VRInteractiveItem que son importantes para este // project.publicclassVRInteractiveItem: MonoBehaviour {publicevent Acción OnOver; // llama cuando la mirada se mueve sobre este objectpublicevent Acción OnOut; // Se llama cuando las hojas esta mirada objectpublicboolIsOver {get {returnm_IsOver;} // es la mirada sobre la actualidad este objeto?} // la continuación funciones son llamados por el VREyeRaycaster cuando la entrada apropiada // es detected.// a su vez, el llamado de los eventos apropiados deberían tener suscriptores .publicvoidOver () {debug.log ( «VRInteractiveItem :: Over»); m_IsOver = true; if (! OnOver = null) OnOver ();} publicvoidOut () {m_IsOver = false; if (! OnOut = null) OnOut ( );}}

    ¿Cómo se define el comportamiento de OnOver y OnOut? VRInteractiveItem es una clase genérica que no sabe nada sobre el comportamiento de nuestra RedPill. Los detalles se encuentran actualmente en el guión CapsuleController que hemos creado anteriormente.

    En CapsuleController.cs, tenemos que añadir un miembro VRInteractiveItem y crear métodos HandleOver () y HandleOut () que se suscriben a VRInteractiveItem.OnOver y VRInteractiveItem.OnOut. Cuando uno de estos métodos se llama, CapsuleController.HandleOver () o CapsuleController.HandleOut () ejecuta. Aquí está nuestro nuevo código:
    utilizando System.Collections; usando System.Collections.Generic; usando UnityEngine; utilizando VRStandardAssets.Utils; public class CapsuleController: MonoBehaviour {float DEFAULT_ROTATION_SPEED private static = 50f; // Hacer rotationSpeed ​​y rotationAxis pública permite // modificar sus valores en el panel Inspector. flotación pública rotationSpeed ​​= DEFAULT_ROTATION_SPEED; pública Vector3 rotationAxis = Vector3.right; interactiveItem VRInteractiveItem privado; void Awake () {interactiveItem = gameObject.GetComponent (); } // Use este para la inicialización de inicio void () {if (interactiveItem! = Null) {interactiveItem.OnOver + = HandleOver; interactiveItem.OnOut + = HandleOut; }} Void OnDisable () {interactiveItem.OnOver – = HandleOver; interactiveItem.OnOut – = HandleOut; } // actualización se llama una vez por cuadro de actualización de vacío () {float = ángulo rotationSpeed ​​* Time.deltaTime; transform.rotate (rotationAxis * ángulo, Space.World); HandleOver} private void () {SetRotationSpeed ​​(0); } Privada HandleOut void () {ResetRotationSpeed ​​(); SetRotationSpeed} private void (float Newspeed) {rotationSpeed ​​= Newspeed; ResetRotationSpeed} private void () {rotationSpeed ​​= DEFAULT_ROTATION_SPEED; }} 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingVRStandardAssets.Utils; publicclassCapsuleController: MonoBehaviour {privatestaticfloatDEFAULT_ROTATION_SPEED = 50f; // Hacer rotationSpeed ​​y rotationAxis pública permite // modificar sus valores en el inspector panel.publicfloatrotationSpeed ​​= DEFAULT_ROTATION_SPEED; publicVector3 rotationAxis = Vector3.right; privateVRInteractiveItem interactiveItem; voidAwake () {interactiveItem = gameObject.GetComponent ();} // Usar esto para initializationvoidStart () {if (interactiveItem! = null) {interactiveItem.OnOver + = HandleOver; interactiveItem.OnOut + = HandleOut;}} voidOnDisable () {interactiveItem.OnOver- = HandleOver; interactiveItem.OnOut- = HandleOut;} // actualización se llama una vez por framevoidUpdate () {floatangle = rotationSpeed ​​* Time.deltaTime; transform.rotate (rotationAxis * ángulo , Space.World);} privatevoidHandleOver () {SetRotationS pis (0);} privatevoidHandleOut () {ResetRotationSpeed ​​();} privatevoidSetRotationSpeed ​​(floatnewSpeed) {rotationSpeed ​​= Newspeed;} privatevoidResetRotationSpeed ​​() {rotationSpeed ​​= DEFAULT_ROTATION_SPEED;}}

    Cuando HandleOver () se llama, el SetRotationSpeed ​​método de ayuda ( ) establece la velocidad de rotación a 0 a la rotación de parada. Cuando HandleOut () se llama cuando el jugador de la mirada se aleja, la velocidad de rotación se restablece a los valores predeterminados por el método ResetRotationSpeed ​​().

    Como último paso, vamos a hacer RedPill un activo reutilizable. En la vista de proyecto, expanda activos y seleccione las casas prefabricadas. Arrastre el RedPill desde el panel Jerarquía downto la parte derecha de la ventana del proyecto, en el panel ahora titulado Assets-> casas prefabricadas. Ahora, para hacer más RedPills, arrastre el icono de RedPill Assets-> Prefabsand soltarlos donde desee en la ventana de escena.


    Al ejecutar su aplicación en la realidad virtual, verá múltiples RedPills giratorias, y se puede detener la rotación de cualquiera de ellos apuntando a su punto de mira en él. Ahora ha creado su mundo virtual interactivo sobre el engranaje VR.


    Mensajes relacionados
    > <img src =

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *