Juego de disparo ====== Oculus GO ====== Abrimos Unity ./UnityHub.AppImage Seleccionamos NEW y la versión 2019 Ponemos nombre disparo y seleccionamos 3D Configuramos el proyecto para Android, vamos a File, Build Settings, seleccionamos Android y pulsamos Switch platform. Tarda 30 segundos. {{:informatica:realidad_virtual:app:disparo_01.png|}} Pulsamos player Settings y ponemos el nombre de nuestra compañia y de la aplicación y la versión si queremos {{:informatica:realidad_virtual:app:disparo_02.png|}} Mas abajo, en Minium API Level seleccionamos Android 6.0 api level 23 en el desplegable {{:informatica:realidad_virtual:app:disparo_03.png|}} Instalamos el plugin de XR {{:informatica:realidad_virtual:app:disparo_04.png|}} Tarda unos segundos y seleccionamos oculus que tarda otros pocos segundos: {{:informatica:realidad_virtual:app:disparo_05.png|}} Ahora instalamos el paquete de Oculus. Aquí explico como descargar: http://wiki.legido.com/doku.php?id=informatica:realidad_virtual:unity#descarga_de_unity_integration Para instalarlo, en la barra del menú, vamos a Assets > Import Package > Custom Package y seleccionamos el paquete de la versión 18 al ser las GO OculusIntegration_v18.unitypackage Nos aparece ventana para importar. Pulsamos import. Tarda bastante, como unos 10 minutos Sale un aviso que la api es obsoleta, le damos a Go Ahead!. Pide también instalar una nueva versión de OVRPlugin, decimos que si y nos pedirá reiniciar {{:informatica:realidad_virtual:app:disparo_06.png|}} Vamos a usar una escena ya creda para reutilizar los componentes. Vamos a Assets > Oculus > VR > Scenes y añadimos GearVrControllerTest, bien haciendo doble click o arrastrando a la ventana de arriba Hierarchy {{:informatica:realidad_virtual:app:disparo_07.png|}} Eliminamos elementos que no usaremos como cube y un Canvas {{:informatica:realidad_virtual:app:disparo_08.png|}} Lo grabamos en file > Save as dentro de el directorio Scenes Vamos a File > Build Settings y pulsamos Add Open Scenes y seleccionamos la que acabamos de grabar {{:informatica:realidad_virtual:app:disparo_09.png|}} Creamos elementos para la escena. Un suelo y unos cubos con un cilindro encima. El cilindro tenemos que añadir componente de rigidBody para que se caiga {{:informatica:realidad_virtual:app:disparo_10.png|}} Que quede algo así: {{:informatica:realidad_virtual:app:disparo_11.png|}} Para crear la bala, creamos una esfera y le ponemos tamaño 0.3 {{:informatica:realidad_virtual:app:disparo_12.png|}} En la parte de abajo añadimos componente Rigidbody pulsando Add Component {{:informatica:realidad_virtual:app:disparo_14.png|}} Una vez añadido deeselccionamos el check en "Use Gravity" Sobre Assets, botón derecho, create folder Scripts donde guardaremos nuestros scripts. Dentro de la carpeta, botón derecho Create > C# Script. Lo llamamos Bala. El nombre es importante porque lo pone en la línea: public class Bala : MonoBehaviour Podemos poner otro nombre pero tenemos que tener cuidado con eso. Contenido del Script: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bala : MonoBehaviour { public float speed = 20.0f; private Rigidbody rb; // Start is called before the first frame update void Start() { rb = gameObject.GetComponent(); Destroy(gameObject, 10); } // Update is called once per frame void Update() { rb.AddForce(transform.forward * speed); } private void OnCollissionEnter(Collision collision) { Destroy(gameObject); } } Ahora asignamos el script al elemento. Lo podemos hacer arrastrando sobre el elemento en Hierarchy o seleccionando el elemento y arrastrarlo en las propiedades de la derecha. Tiene que quedar así. Podemos modificar la variable velocidad de la bala porque la hemos hecho pública: {{:informatica:realidad_virtual:app:disparo_13.png|}} Creamos una carpeta Prefabs en Assets y arrastramos el elemento que hemos creado como bala ahí. Ya podemos borrar el elemento de hierarchy. Para probar que funciona, pulsamos el play y seleccionamos la pestaña Scene. Arrastramos la bala de Asset a la escena y vemos que se mueve como una bala Creamos el script gatillo (recordad que el nombre del fichero es importante, es el nombre de la clase) using System.Collections; using System.Collections.Generic; using UnityEngine; public class gatillo : MonoBehaviour { public GameObject bullet; public float fireRate; private float nextFire; // Update is called once per frame void Update() { if(OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger) && Time.time > nextFire) { nextFire = Time.time + fireRate; Instantiate(bullet, gameObject.transform.position,gameObject.transform.rotation); } } } Lo añadimos al mando derecho arrastrándolo encima {{:informatica:realidad_virtual:app:disparo_15.png|}} Tenemos que arrastrar la bala al objeto bala del script gatillo y ponemos el tiempo entre disparo y disparo, por ejemplo 0.5 {{:informatica:realidad_virtual:app:disparo_16.png|}} Seleccionamos la camara y la ponemos a la altura de los ojos {{:informatica:realidad_virtual:app:disparo_17.png|}}