This is an old revision of the document!
Table of Contents
Enero 2023
Descarga Unity
Descargamos Unity hub
https://unity3d.com/get-unity/download
Método de instalación con apt metiendo el server en sources:
echo "deb https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'
Descargamos la key. La mete en trusted.gpg pero eso es deprecated y la movemos a trusted.gpg.d
mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg_old wget -qO - https://hub.unity3d.com/linux/keys/public | sudo apt-key add - mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/hub.unity3d.com.gpg
Luego lo instalamos
apt update apt-get install unityhub
Instalamos hub/editor (son unas 5Gb)
Instalamos la última versión LTS que es 2021.3.16f1 y la última que hay que es 2022.2.2f1
https://developer.oculus.com/downloads/package/unity-integration-archive/
Nuevo Proyecto
https://www.youtube.com/watch?v=apL9lIkKLHQ
Nuevo Proyecto como 3D
Vamos a “File > Build Settings” y seleccionamos android y pulsamos switch platform
En “Texture Compression” seleccionamos la recomendada para Oculus: ASTC
Ahora instalamos el plugin de XR. “Edit > Project Settings” luego “XR Plugin Management” y “Install XR Plugin Management”
En la pestaña de Android, seleccionamos Oculus
Instalamos “XR Interaction Toolkit unity”. Seleccionamos “Window > Package Manager”
Seleccionamos “Unity Registry” e instalamos “XR Interaction Toolkit”
Nos dice que reiniciar, le damos que si.
Importamos los ejemplos:
Añadimos las acciones a las manos. Vamos a “Assets > Samples > XR Interaction Toolkit > 2.04 > Starter Assets”. Para verlo en modo lista, seleccionamos la barra de preview de la derecha al mínimo.
Seleccionamos “XRI Default Left Controller” y pulsamos a la derecha: “Add to ActionBaseController default”
Lo mismo para “XRI Default Right Controller”
Ponemos un nombre por defecto. Vamos a “Edit > Project Settings” y en “Preset Manager” ponemos “Left” y Right“
Añadimos a la escena el jugador, que sería “XR > XR Origin (Action-Based)” En la última versión es “XR Origin (VR)” Importante haber hecho antes lo de asignar los Assets en los controles, sinó, nos añadirá el XR Origin pero sin acciones en las manos.
Añadimos un plano para tener referencia
Bajamos el suelo un poco para que quede por debajo del jugador
- ESTA PARTE YA LA TIENE AÑADIDA ***
Tenemos que hacer que detecte los input assets. Seleccionamos “XR Origin” y en la derecha seleccionamos “Add Component”
Buscamos “Input Action Manager” y lo seleccionamos
Abrimos “Action Assets”. Tiene seleccionado el único que tenemos que viene por default.
Coger un objeto a distancia
https://www.youtube.com/watch?v=rhD4_NJMl-g
Descargamos linterna de asset store pulsando “add to my assets”
https://assetstore.unity.com/packages/3d/props/electronics/flashlight-18972
En unity lo importamos, Vamos a “Window > Package Manager” y seleccionamos “My Assets”
Si no nos aparece, le damos abajo a refrescar. Seleccionamos la linterna y damos a download
Luego nos aparecerá import, pulsamos y se abrirá otra ventana y nuevamente import.
Nos aparece en nuestros Assets. La arrastramos a nuestra escena, en la pantalla o a la lista de izquierda.
Añadimos cubos a la escena para iluminar con la linterna:
Deshabilitamos la luz de ambiente. Seleccionamos “Directional Light” y quitamos el check.
Apagamos también la linterna. Abrimos el desplegable y en “White light” desmarcamos el check
Añadimos el componente a la linterna para que la podamos coger. Abajo en el menu de la derecha y está “Add Component” y selecctioamos “XR Grab Interactable”
Para evitar que la linterna atraviese el suelo, le añadimos el componente “Box Collider”
La coge con el botón (dedo anular) pero en perpendicular:
Tenemos que crear un un nuevo elemento a la linterna. Pulsamos botón derecho y pulsamos “Create Empty”
Por defecto pone “GameObject”, le cambiamos el nombre a “PuntoCogida”
Será el punto en el que lo cojamos
Ahora para aplicar la transformación, tenemos que arrastrar el gameobject “PuntoCogida” a la linterna, en “XR Grab Interactable > Attach Transform” o seleccionarlo.
Quedaría así:
Ahora ya la coge bien.
Si pulsamos el stick del mando el objeto se aleja. Si queremos quitar este efecto es con “Anchor Control”
Ahora falta hacer que al pulsar el botón se encienda la luz. Usamos los action events. Vamos a “XR Grab Interactable > Interactable Events”
El botón de activar es el gatillo. El botón “Select” es el anular y “Activate” el gatillo. Pulsamos el + en Activate para añadir propiedad. Arrastramos la luz encendida (WhiteLight) ponemos “GameObject.SetActive” y marcamos el check.
Para que se apague, hacemos lo mismo en Deactivated pero sin marcar el check:
Añadir manos
Descargamos el asset “Oculus Hands Physics.unitypackage”
https://download2270.mediafire.com/ikdov34vpujg/r8vmytboostszzj/Oculus+Hands+Physics.unitypackage
Lo adjunto por si acaso:
oculus_hands_physics.unitypackage.gz
Para instalar el Asset, arrastramos dentro de Assets el fichero “oculus_hands_physics.unitypackage” o lo añadimos desde “Assets” > “import package” > “Custom Package”
Ahora lo añadimos a las manos arrastrando el asset “Oculus Hands Physics > Prefabs > Left Hand Presence” a la mano izquierda y el derecho a la derecha
Coger un objeto a mano
Vamos a hacer que la mano izquierda coja los elementos en local sin necesidad del rayo. Vamos a left hand controller y eliminamos “XR Ray Interactor”
Y ahora añadimos “XR Direct Interactor”
Para que pueda coger el objeto, tenemos que añadir en la mano también el componente “Sphere Collider”
Y luego marcarlo como Trigger
Si no coge el objeto, cuidado que a veces se cambian las coordenadas del Box Colider que le hemos puesto en la mano. Poner a 0
Movimiento Continuo
https://www.youtube.com/watch?v=706Bx0hutM0
Creamos GameObject y lo llamamos “LocomotionSystem” y le asignamos con “Add Component” > “Locomotion System”
Arrastramos nuestro “XR Origin” a la casilla “XR Origin” del componente “Locomotion System”
Al jugador (XR Origin) le añadimos con “Add Component”:
- Continous Move provider
- Continous Turn provider
Seleccionamos la mano derecha para girar. Pulsamos en “Continous Turn Provider”, marcamos el check de “Use Reference” y en “Reference” ponemos “XRI RightHand Locomotion Turn”
Para la mano izquierda, lo mismo pero con “XRI LeftHand Locomotion/Move”
Ahora tenemos que añadir que haga colisión con los objetos. Añadimos a “XR Origin” el componente “Character Controller” y “Character Controller Driver”. En “Character Controller Driver” ponemos “Min Height” 1 y “Max Height” 2 que sería altura entre 1 metro y 2 metros.
Hay un problema que hace colisión con un objeto cogido y empiezas a volar
https://forum.unity.com/threads/grab-able-objects-interfering-with-locomotion-system.1258443/
Una posible solución:
https://forum.unity.com/threads/grabbed-rigidbody-is-moving-my-xr-rig.1087481/
Lo he solucionado de momento en el objeto poniendo que al pulsar select (anular) le quite la propiedad boxcollider y al soltarlo se la vuelva a añadir.
Teleport
Teletransportación
Puzzle
https://www.youtube.com/watch?v=iSYfs6NXZck
16:15 - Scripts
Se crean las cartas. La caja del puzzle es “XR > Socket Interactor”
URP Universal Render Pipeline
No sé para que sirve del todo, pero lo uso para dar luz a los materiales.
Instalación:
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manual/InstallURPIntoAProject.html
Para que el material se vea se tiene que convertir a URP en “Edit > Rendering > Materials > Convert Selected Built-in Materials to URP”
Luego hay que añadir “Gobal Volume” y a este los Overrides:
Tonemapping Bloom Vignette