¡Bienvenido! En este codelab, resumiremos todos los temas vistos en este módulo para modificar y crear nuevas funcionalidades del HuertoXR. Recuerda que todos los pasos están basados en los videos y tutoriales del módulo 3. Si necesitas profundizar en algún tema, puedes volver a ver el video correspondiente al paso específico.

Temas evaluados

Requisitos previos

  1. Haber finalizado Módulo 1 y Módulo 2
  2. Descargar el paquete Modulo2 en GitHub: https://github.com/viverovirtualuniandes/proyectoXR-Base/releases/download/modulo02.v1/Modulo2.unitypackage
  3. Importar el paquete Modulo2 a su proyecto local del HuertoVR

Objetivo

Con ayuda de este resumen, podrás recordar los conceptos vistos en el módulo 3 para desarrollar un script que permita instanciar objetos de forma automática. Además, podrás recordar cómo crear una animación sencilla para darle vida a los objetos de tu proyecto. A continuación, podrás ver una imagen de referencia, de cómo deberá verse tu escena al finalizar este ejercicio.

A continuación, te presentaremos una serie de pasos que debes ir siguiendo para completar el ejercicio.

  1. En tu navegador, dirígete a la siguiente página web: https://sketchfab.com

Una vez cargue la página web, en la barra de búsqueda escribe "LOW POLY TREE PACK" para encontrar el modelo que vamos a utilizar. Además, haz click en el botón "Downloadable" para filtrar solo los modelos que puedes descargar.

También, puedes encontrar el modelo específico en el siguiente enlace: https://sketchfab.com/3d-models/low-poly-tree-pack-ea6e844754da494a9c38501b4fff92ad

Consejo: Como vimos en el video sobre modelos 3D, cada modelo está compuesto por muchos polígonos, entre más polígonos tenga un objeto más pesado será para nuestro programa XR. Por lo tanto, puedes optar por agregar las palabras "Low Poly" en tus búsquedas para encontrar objetos con menor número de polígonos. Puedes verificar el número de polígonos al seleccionar un modelo. A continuación, te presentamos un ejemplo.

  1. Selecciona el modelo y descárgalo. Recuerda, debes tener una cuenta en esta página web para poder realizar descargas. En caso de no contar con una cuenta, puedes registrarte de manera gratuita o acceder por medio de terceros como por ejemplo Facebook o Google.

Consejo: Antes de descargar el objeto, verifica que cuente con el formato ".fbx". Recordando lo visto en el video sobre Modelos 3D, este formato es compatible con Unity debido a sus propiedades.

  1. Importa el modelo 3D en formato .fbx dentro de la carpeta Models y agrégalo a la escena.

Consejo: Algunos modelos 3D en formato .fbx incluyen imágenes de texturas. Al momento de importarlas en Unity, asegúrate de hacerlo dentro de la carpeta Textures.

  1. Ahora, desempaqueta el prefab que se genera automáticamente dejar únicamente el árbol que se visualiza en la siguiente imagen. Además, cambia el nombre de este objeto a "ArbolManzanas".

  1. Convierte el nuevo árbol a un prefab agregándolo dentro de la carpeta Prefabs. Por motivos de organización, en el tutorial utilizamos el subdirectorio Ambiente dentro de la carpeta Prefabs.

  1. Abre el prefab recién creado y agrégale una manzana para diferenciarlo.

  1. Vuelve a la ventana jerarquía y verifica que ahora cuando utilizas el prefab ArbolManzanas este guarda los cambios realizados. Estas copias de un mismo objeto dentro de la escena se llaman instancias.

  1. Ahora, vamos a crear un programa que nos permita crear copias de un objeto de manera automática. Para ello, deja un solo árbol en la escena y crea un objeto de juego vacío llamado Raiz.

  1. Ahora, crea un script llamado CrearCincoObjetos para crear instancias del árbol modificado de manera automática.

  1. Agrega una variable global pública que haga referencia al objeto de juego que vamos a instanciar, en este caso, un árbol.
public GameObject arbolACopiar;

  1. Dentro del método Start(), agrega la función Instantiate() con el objetivo de crear réplicas de un objeto a través de un objeto padre. En este caso, arbol representa la copia generada y arbolACopiar el objeto padre del cual se generan los duplicados.
GameObject arbol;
arbol = Instantiate(arbolACopiar, transform);

  1. Ahora, posiciona la nueva instancia del árbol a copiar para que se muestre dentro de la escena.
arbol.transform.localPosition = new Vector3(0,0,0);

  1. Luego de agregar la función Instantiate() para generar el duplicado de un árbol, copia y pega las líneas de código creadas para hacer 4 réplicas adicionales.
arbol = Instantiate(arbolACopiar, transform);
arbol.transform.localPosition = new Vector3(3, 0, 0);
arbol = Instantiate(arbolACopiar, transform);
arbol.transform.localPosition = new Vector3(6, 0, 0);
arbol = Instantiate(arbolACopiar, transform);
arbol.transform.localPosition = new Vector3(3, 0, 5);
arbol = Instantiate(arbolACopiar, transform);
arbol.transform.localPosition = new Vector3(6, 0, 5);

  1. Ahora, agrega como componente el script que acabas de crear al objeto Raiz. Además, asígnale el prefab del árbol de manzanas del cual se van a generar las instancias.

  1. Posteriormente, mueve el objeto de juego Raiz, pues esta es la posición que usarán como referencia las instancias del árbol.

  1. Ejecuta el proyecto y evidencia los cambios en la escena.

  1. Ahora, vamos a recordar cómo animar un objeto en Unity. Para ello, abre la ventana de Animation y, en la jerarquía, ubica el objeto de juego llamado Veleta. Asegúrate de seleccionar el objeto Veleta que se encuentra justo dentro del objeto Casa, tal como se ve en la siguiente imagen.

  1. Agrégale al objeto Veleta el componente Animator.

  1. Ahora, crea una nueva animación y guárdala dentro de la carpeta Animations, en caso de que no tengas la carpeta dentro de Assets asegúrate de crearla. Llama a la animación rotarVeleta.

  1. Para simular la rotación del objeto Veleta agrégale una propiedad de rotación a la animación.

  1. Mueve el fotograma clave hasta el segundo 6.

  1. Ahora, situando la línea de tiempo en un punto intermedio (3 segundos) rota el objeto ligeramente a la derecha para generar la animación del movimiento. Recuerda grabar las acciones para que se guarden los cambios en la animación.

  1. Finalmente, detén la grabación de la animación y ejecuta el programa para evidenciar los cambios en el proyecto.

¡Felicidades! Has completado el codelab de Resumen del Código Módulo 3. Ahora, cuentas con los conocimientos necesarios para instanciar objetos de manera automática a través de scripts y crear animaciones dentro de tu proyecto. Esperamos que esta guía te haya sido útil para recordar todos los temas que hemos visto hasta ahora. Te invitamos a seguir explorando con Unity y recuerda que puedes volver a ver los videos del módulo en caso de que quieras practicar algún tema en específico.