Unity 3D

Qué es un motor de videojuegos?

Algunos ejemplos de motores de videojuegos son gamesaladgamemakerconstruct (no tiene versión para mac), Stencyl (tiene versión nativa para Linux), Unreal Engine

Nos permiten exportar para diversas plataformas: Nintendo, PlayStation, PC, Mac, web, Linux…, dependiendo del motor.

Características

  1. Soporta desarrollo de videojuegos en 2 y 3 dimensiones.
  2. Se programa utilizando C#.
  3. Ejemplos de juegos hechos con Unity
  4. Pese a ser muy potente tiene una interfaz sencilla y un desarrollo mediante código bastante legible.
  5. Nos permite publicar el juego sin ningún tipo de coste

Diferencias entre la versión personal y la PRO

Lecciones

Interfaz

Barra de herramientas horizontal superior Nubecita: Sólo para cuentas pro. Nos permite trabajar en la nube. Último desplegable (layout): Trabajaremos en el valor default. Penúltimo desplegable (layers): Esto controla que capas son visibles o invsibles. Si nos ponemos a mariposear y desactivamos el ojo de la capa default, no veremos […]

Conceptos básicos

Escenas Son ficheros con extensión .unity Son los niveles del juego, las pantallas del menú, etc. Para guardar escenas crearemos una carpeta en el panel de proyecto y ahí será dónde las guardemos. Game Objects Dentro de una escena hay “Game objects”, que son los objetos que puedes ver en […]

Ejercicio: cubos

Duplicando, escalando y desplazando cubos 3D realizar una mesa. Agrupar los Game Object en el panel de jerarquías, y luego duplicar varias veces la mesa creada y agrupada.

Cambiar el color de algo

De un GameObjet Debo crear un nuevo material en el panel de proyecto y arrastrarlo y soltarlo sobre el objeto. Si no quiero que el material se vea afectado por la luz, tras aplicar el material a un objeto, seleccionaré el correspondiente componente → Shader → Unlit → Color De […]

Introducción a C#

Panel de proyecto → Click derecho → Create → Script de C# Panel de jerarquía → Click derecho → Crate → Empty llamado “EscenaManagement” Asociamos el script creado al empty creado Editor Si estamos usando windows, lo normal es usar el visual studio. Pero si usamos linux, podemos usar el […]

Conceptos para realización de juegos 2D

Para cambiar entre vista 3D y 2D: Edit -> Proyect Settings -> Editor -> Default behaviour mode Las luces no tienen efecto sobre los sprites, pero sí sobre las texturas. Para que los objetos 3D se vean con colores nítidos, igual que ocurre con los sprites: Window -> Rendering -> […]

Acceder a componentes desde código

Acceder a componentes del propio objeto Acceder a componentes de otro objeto El método Find sólo accede al primer nivel de hijos de un elemento. Si queremos acceder recursivamente a los sucesivos niveles de hijos de un lemento podemos usar una función recursiva. Ejemplo de uso

User Interface

Creamos un nuevo proyecto 2D. Panel jerarquía -> botón derecho -> UI -> Button. Cada vez que añadimos un UI a escena estará anidado bajo un único GameObject Canvas principal. Componentes del canvas Canvas En el panel de jerarquías definiremos que elementos de la UI se verán por encima (lo […]

Elige tu propia aventura

Haremos click sobre zonas de la pantalla que nos llevarán al éxito o a la muerte. Ajustar la imagen de fondo a la pantalla Creamos un nuevo Proyecto 2D. La cámara tendrá proyección Ortográfica. Definimos la relación de aspecto correcta: Pestaña Game -> Desplegable de relación de aspecto -> 3:2 […]

Sprites

Sprites múltiples Para optimizar el rendimiento de la aplicación, en lugar de cargar una foto por cada imagen, es recomendable cargar una foto que contenga todas las imágenes necesarias. Todas las fotos que sean introducidas en el panel de proyecto en modo 2D son interpretadas como sprites. Si son introducidas […]

Acierta imagen

Dadas 3 imágenes alineadas horizontalmente en un panel inferior y una imagen superior centrada, si pulsamos en una imagen del panel que coincide con la superior, se disparará una traza. Cargamos la imagen de fondo Cargamos tres imágenes abajo y una posible solución arriba Detectar pulsación sobre las imágenes de […]

Fall Down Game

Ponemos el fondo de pantalla Un misil cae por gravedad Añadimos el sprite de un misil a la pantalla. Le añadimos al misil un componente de tipo RigidBody 2D. Tipos de RigidBody Dynamic: El cuerpo es afectado por las fuerzas que interactúan con él. Kinematic: El cuerpo no es afectado […]

Poner una imagen de fondo

Podemos hacerlo de varias formas: Como imagen del canvas (forma recomendada porque podremos controlar cómodamente el grado de repetición de la imágen de fondo) Arrastro las esquinas para que ocupen todo el canvas. En el inspector: Seleccionamos el canvas que envuelve a la imagen: Render mode: Screen Space – Camera […]

Instanciar

Instanciar un GameObject y añadirle propiedades dinámicamente El siguiente ejemplo instancia una imagen en pantalla ubicada dentro de la carpeta Resources. Instanciar un prefab ¿Qué es un prefab? Un prefab es un GameObject que puede agrupar a su vez varios GameObjects, Scripts, assets, etc y que está empaquetado y prepararado para […]

Galería de tiro

Primer paso – todo lo que ya vimos Colocamos el fondo y los enemigos con sus correspondientes animaciones en escena. Cuando pulsemos sobre cualquiera de los enemigos, debe mostrarse una traza. Finalmente, cambiaremos la traza por una animación de explosión. Un único animal se mueve Vector.Lerp hace una traslación desde […]

Corrutinas

Son códigos que se ejecutan a lo largo de un espacio de tiempo. Utilizan la clase IEnumerator. En este ejemplo, el script irá asociado a la cámara. Carga asíncrona de una escena Ejercicio Carga ambas escenas asíncronamente

Flappy Bird

Ponemos la imagen de fondo Ponemos el heroe en pantalla Debe caer por gravedad y tener una animación. Cuando pulsamos la tecla espacio, el pájaro sube para arriba Una tubería se mueve horizontalmente Creamos un prefab (varios objetos que arrastramos simultaneamente al panel de proyecto) con dos tuberías enfrentadas cuyo […]

PONG

Ponemos el fondo en pantalla Ponemos la pelota en pantalla Añadimos el script de movimiento a la pelota Hacemos que la pelota rebote contra los límites superior e inferior de la pantalla Colocamos dos cubos estirados en la parte superior e inferior de la pantalla. Asignamos un BoxCollider2D a los cubos. Asginamos […]

Carreras

Ponemos la imágen de fondo Ponemos un player en pantalla Lo pondremos con su correspondiente animación. El jugador avanza hacia delante No queremos el el player caiga por gravedad, así que, para su componente RigidBody2D: Cambiamos la propiedad Gravity Scale a 0. Definimos la propiedad Constraints -> Freeze Rotation: 0. Girar al jugador con el teclado […]

Plataformas

Ponemos la imagen de fondo Ponemos al prota en pantalla Debe tener la animación de respirar. Debe caer por gravedad Tilemap Editor Crear un nuevo tilemap Botón derecho sobre el panel de jerarquía -> 2D Object -> Tilemap Menú Window -> 2D -> Tile Palette New Palette -> Seleccionamos los […]

Puzzle con RayCast

Seleccionar una pieza (lanzar un rayo 2D y 3D) Para que funcionen los rayos, cada pieza debe tener un BoxCollider y un RigidBody. Mover pieza con RayCast Explicación del método mover pieza. Un rayo es infinito. Nos interesa mover la pieza al punto correcto de profundidad; por eso utilizamos la variable longitudRayo. limiteRayo será […]

Juego arrastrar y soltar

Para hacer la comparación de si el valor de la mariquita coincide con el valor de la hoja, lo más fácil será modificar dinámicamente el name de cada una de las mariquitas y de cada una de las hojas, asignándoles el valor solución. Luego, compararemos los name de ambos objetos. Haremos un […]

Dibujar líneas con el mouse

Configuración global: Usaremos una vista ortográfica para la cámara. ( Seleccionamos la cámara -> Projection -> Orthographic) Usaremos un fondo plano (Seleccionamos la cámara -> Clear flags -> Solid color) Creando el pincel: Create Empty. Lo llamaremos ball Dentro de este empty creamos un 2D Object -> Sprite. Le asignamos la imagen […]

Plataformas con RayCast

Creamos un nuevo proyecto 2D. Cuando terminemos… La entidad player tendrá asociadas las clases Player, PlayerInput, Controller2D (cuya propiedad Collision Mask será obstacle) y pertenecerá al layer player La entidad MainCamera tendrá asociada la clase CameraFollow. Las plataformas y el suelo tendrán asociadas el Layer obstacle. Debemos asegurarnos de que la check Edit -> Project Settings -> Physics2D […]

Máscara en Unity 3D

Sin código Añadimos a un panel un componente de máscara. Cuando el componente de máscara esté activo, sólo se verá la parte de sus hijos que estén ubicados dentro. Con animación La siguiente corrutina hace que la máscara se despliegue Ejercicio Escribir una corrutina para que la máscara se repliegue. […]

Soporte para Oculus Quest

Debemos usar como mínimo la versión 2018.4 para arriba Configuración inicial Instalar el oculus plugin Unity menu -> Window -> Asset Store Escribimos “Oculus integration” en el buscador. Instalamos el primer resultado (un plugin gratuito hecho por Oculus). Instalar los driver de oculus Descargamos los drivers de Oculus. Descomprimimos el zip […]

Memory (juego de las parejas)

Ubicar objetos en el canvas Creo la siguiente jerarquía de objetos dentro del camvas: Panel (con el componente vertical layout group) panel1 (con el componente horizontal layout group) carta1 carta2 carta3 carta4 carta5 panel2 (con el componente horizontal layout group) carta1 carta2 carta3 carta4 carta5 Voltear cartas GameController.cs Card.cs La carta llama al […]

Publicación

File -> Build Settings Pulsando en el botón Player Settings podré definir algunas propiedades de la exportación. Player settings Publicación para Desktop Display Resolution Dialog: Disabled. Mejor ponerlo en disabled, no vaya a ser que el usuario seleccione una resolución que nosotros no habíamos contemplado. Publicación para web Debemos asegurarnos de que […]

Ejercicio: First Person Shooter

Crear la siguiente escena con su correspondiente FPSController Importamos los assets necesarios: Window -> Asset store -> Standard Assets -> importamos: Characters -> FirstPersonCharacter. Este asset tiene las siguientes dependencias: CrossPlatformInput Utility Además, podemos descargar una casita: Prototyping -> Models -> HousePrototype16x16x24 Todos los elementos que se muestran en escena […]

Importar personaje 3D a la escena

Assets Store -> Descargamos Junk Chan -> Lo importamos todo. Vamos a la carpeta Models -> arrastramos y soltamos el modelo de JunkChan. Creamos una entidad Animator. Al desplegar el modelo pulsando en su flechita salen todas sus animaciones. Arrastramos al animator las animaciones idle, walk, Sword_Slash.

Multijugador con Photon

Vamos a utilizar los servidores de Photon para hacer un juego multijugador. Estos servidores tienen instalada una aplicación llamada PhotonServer. Nosotros también podríamos instalar PhotonServer en nuestro propio servidor, pero utilizando los servidores de Photon nos ahorramos este paso. Los servidores de Photon reciben el nombre de Photon Cloud PUN (Photon Unity NetWorking) es […]

Detectar cuando suelto algo encima de otro objeto

Este evento detecta la colisión entre el ratón y el objeto B sobre el que he soltado una pieza A. Sin embargo, si la pieza A está entre el ratón y la pieza B, dicha colisión no será detectada. Para evitarlo, puedo añadir al botón A un componente de tipo […]

Aviso Legal | Política de privacidad