Fundamentos Esenciales de Unity para Desarrollo VR y AR
Clasificado en Informática
Escrito el en español con un tamaño de 9,36 KB
Conceptos Generales de Unity
- Panel Hierarchy: Contiene todos los objetos (GameObjects) presentes en la escena actual.
- Carpeta Assets: Directorio principal en un proyecto de Unity que almacena todos los recursos del juego, como modelos 3D, materiales, texturas, animaciones, scripts, sonidos, etc.
- Objetos Nativos (Unity): Se pueden crear haciendo clic derecho en el panel Hierarchy y seleccionando el tipo de objeto deseado (e.g., 3D Object, Light, Camera).
- GameObjects: En Unity, los GameObjects pueden organizarse jerárquicamente mediante relaciones Padre-Hijo, donde los hijos heredan las transformaciones de sus padres.
- Prefab: Una copia reutilizable de un GameObject que se guarda en la carpeta Assets. Permite instanciar múltiples copias del mismo objeto con las mismas propiedades.
- Crear Escena: Las escenas se crean y guardan típicamente dentro de una subcarpeta 'Scenes' ubicada dentro de la carpeta 'Assets'.
- Cambiar Plataforma Destino en Unity: Se realiza accediendo a las 'Build Settings' (Configuración de Compilación) del proyecto.
- Rect Tool: Herramienta en Unity utilizada para mover, redimensionar y rotar elementos de la interfaz de usuario (UI) o GameObjects 2D.
Animación y Físicas en Unity
- Animator y Audio Source: Permiten añadir animaciones y sonidos a los GameObjects.
- Añadir Animación al Player: Se logra añadiendo el componente Animator al GameObject del Player.
- Animator Controller: Un asset que define el comportamiento de las animaciones y es necesario para que el componente Animator funcione correctamente.
- Rigidbodies: Componentes que permiten a los GameObjects actuar bajo el control del motor de físicas de Unity, respondiendo a la gravedad, colisiones, fuerzas, etc.
- Box Collider: Un componente de colisión con forma de cuboide rectangular, utilizado para crear límites de objetos, suelos o paredes.
- Cylinder Collider: Componente de colisión que detecta objetos con forma cilíndrica o cónica.
- Acceder a Parámetros de un Collider: Se puede acceder a los parámetros de un componente Collider utilizando
GetComponent<Collider>()
y manejar eventos de colisión con funciones comoOnCollisionEnter()
. - Nav Mesh Agent: Componente que permite dotar de inteligencia artificial (IA) a un objeto para que navegue de forma autónoma. Requiere una malla de navegación (NavMesh) precalculada.
- Crear Malla de Navegación (NavMesh): Para generarla, es necesario marcar como 'Static' los objetos del entorno que no vayan a moverse durante la ejecución.
Interfaz de Usuario (UI) en Unity
- Slider: Elemento de interfaz de usuario (UI) que permite variar un valor numérico decimal entre un mínimo y un máximo predefinidos.
- Crear Barra de Vida: Se implementa utilizando un elemento Slider como hijo del Canvas de la escena, desactivando su campo 'Interactable' para que no sea manipulable por el usuario.
- Sprites en el Canvas: Objetos gráficos 2D utilizados para elementos de interfaz de usuario o gráficos en un Canvas.
- Screen Space - Overlay: Un modo de renderizado para el Canvas en Unity que sitúa los elementos de la UI directamente en la pantalla, superponiéndolos a la escena 3D.
Programación y Scripting en Unity (C#)
- Float: Tipo de dato numérico que permite almacenar números con decimales (coma flotante).
- String: Tipo de dato que representa una secuencia de caracteres (texto).
- Condicional If: Estructura de control que permite ejecutar o no una parte del código dependiendo de si se cumple o no una condición específica.
- Foreach: Estructura de bucle que permite recorrer todos los elementos de una colección, lista o array de forma sencilla.
- While: Estructura de bucle que ejecuta un bloque de código repetidamente mientras una condición específica sea verdadera.
- Imprimir en Consola: Se utiliza el comando
Debug.Log()
en C# para mostrar mensajes, valores de variables o depurar información en la Consola de Unity. - Variables (C# en Unity): Si se declaran como 'private', solo se puede acceder a ellas desde el script donde están definidas, a menos que se utilicen atributos como
[SerializeField]
. - Modificar Transformaciones por Código: Es posible modificar los valores de posición, rotación y escala de un GameObject directamente a través de scripts en C# (accediendo a su componente
Transform
). - Transform.Translate(): Método que permite aplicar traslaciones lineales (movimiento) a un GameObject en el espacio 3D.
- Awake(): Función de ciclo de vida de un script en Unity que se invoca una vez cuando el script se carga, incluso antes de que la escena comience.
- Funciones de Ciclo de Vida de Scripts (Unity): Las funciones más comunes en los scripts de Unity son
Start()
(se invoca una vez al inicio) yUpdate()
(se invoca en cada frame). - Singleton: Patrón de diseño que asegura que una clase tenga una única instancia y proporciona un punto de acceso global a ella. En Unity, se usa para scripts que deben ser únicos en la escena.
Realidad Virtual (VR) en Unity
- Crear un Sistema de Partículas: Clic derecho en el panel Hierarchy, luego Create > Effects > Particle System.
- Prewarm: Propiedad de un sistema de partículas que permite que actúe desde el inicio de la escena, como si ya hubiera transcurrido tiempo.
- VR Gaze: Generalmente, una imagen o punto de mira situado en el centro del Canvas, utilizado para la interacción en entornos de Realidad Virtual.
- XR Rig GameObject: Un GameObject preconfigurado que especifica la plataforma XR, un objeto para la compensación del suelo y la cámara principal para experiencias de Realidad Extendida (XR).
- Componentes para Usar Cámara Cardboard: Para configurar una cámara compatible con Google Cardboard, se suelen requerir componentes como 'Flare Layer', 'Audio Listener' y 'Tracked Pose Driver'.
- Activar Entorno VR para Oculus: Requiere instalar el paquete 'XR Plugin Management' y configurar el proveedor de Oculus en las Project Settings.
- Desarrollar Juego para Oculus: Para dispositivos Oculus Quest, el desarrollo y la compilación se realizan generalmente para la plataforma Android.
- Movimiento del Player: A menudo se implementa de forma que el movimiento del personaje (Player) dependa del punto de vista de la cámara.
Realidad Aumentada (AR) en Unity
- Vuforia: Herramienta o SDK ampliamente utilizado para crear aplicaciones de Realidad Aumentada (RA).
- Crear Image Target en Vuforia: Implica crear una 'Database' (Base de Datos) en el portal de Vuforia, la cual se vincula a tu licencia de desarrollador.
- Databases Tipo Device (Vuforia): Almacenan los 'Image Targets' directamente en el dispositivo, sin requerir conexión a internet para su reconocimiento.
- Crear Database en Vuforia: Se realiza a través del 'Target Manager' en el portal de Vuforia, utilizando la opción 'Add Database'.
- Default Trackable Event Handler (Vuforia): Un script que permite definir acciones personalizadas cuando un 'Image Target' (o cualquier 'Trackable') es detectado o pierde su rastro.
- Vuforia: Plataforma de Realidad Aumentada que reconoce el mundo real basándose principalmente en el procesamiento visual (imágenes, objetos).
- Realizar un Proyecto AR (Realidad Aumentada): Implica vincular un 'Image Target' (o cualquier otro tipo de Target) a los objetos virtuales que deseamos que sean 'trackeados' y mostrados en el espacio real.
- Crear Player (en AR): En proyectos de Realidad Aumentada, el GameObject del Player (o el contenido 3D) a menudo se coloca como hijo del 'Image Target' para que se mueva con él.
- ARCore: SDK de Google para construir experiencias de Realidad Aumentada en dispositivos móviles.
- AR Foundation: Un framework de Unity que proporciona una interfaz unificada para desarrollar aplicaciones de Realidad Aumentada multiplataforma.
- AR Session Origin: Componente esencial en AR Foundation que gestiona la transformación de entidades 'Trackables' (como superficies planas o puntos de características) en el espacio de la escena de Unity.
- AR Session: Componente central en AR Foundation que controla el ciclo de vida de la experiencia de Realidad Aumentada, gestionando el seguimiento y la detección del entorno.