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.

Pulsamos player Settings y ponemos el nombre de nuestra compañia y de la aplicación y la versión si queremos

Mas abajo, en Minium API Level seleccionamos Android 6.0 api level 23 en el desplegable

Instalamos el plugin de XR

Tarda unos segundos y seleccionamos oculus que tarda otros pocos segundos:

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

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

Eliminamos elementos que no usaremos como cube y un Canvas

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

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

Que quede algo así:

Para crear la bala, creamos una esfera y le ponemos tamaño 0.3

En la parte de abajo añadimos componente Rigidbody pulsando Add Component

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<Rigidbody>();
        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:

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

Tenemos que arrastrar la bala al objeto bala del script gatillo y ponemos el tiempo entre disparo y disparo, por ejemplo 0.5

Seleccionamos la camara y la ponemos a la altura de los ojos