Fundamentos de Unitycursosmspve.azurewebsites.net/contenido/FundamentosUnity.pdfdocumentos y activos...
Transcript of Fundamentos de Unitycursosmspve.azurewebsites.net/contenido/FundamentosUnity.pdfdocumentos y activos...
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Fundamentos de Unity
Esta sección la dedicare únicamente a conceptos de Unity, posteriormente se explicara la
interfaz sobre la marcha.
Conceptos Básicos
Vamos por partes, cada uno de los siguientes conceptos esta referenciado
exclusivamente a Unity olvídense de cualquier conocimiento de otra carrera, en
particular aquellos que vengan de programación orientada a objetos.
Proyecto
El proyecto contiene todos los elementos del juego, es decir cada uno de los
documentos y activos del juego (Assets, es decir modelos en 3D y texturas 2D,
música y otros.) tienden a ser únicos e independientes, de forma que un proyecto no
debería en la mejor de las circunstancias relacionarse con otro.
Escena (Scenes)
La escena es la que nos permite navegar por el ambiente del juego. Una
escena es equivalente a un nivel. Y contiene todos los elementos que interactúan en
el. Aparte contiene o permite realizar operaciones básicas con los elementos. Rotar,
escalar, posicionar y seleccionar.
Navegación La navegación nos permite explorar el nivel a través de diferentes escenas, e
incluso ver el juego desde el punto de vista del usuario.
Viewports Es la sección de la pantalla por la cual se muestra lo que la cámara ve.
Técnicamente es un rectángulo en 2D que se usa para proyectar una escena en 3D.
Podemos considerar que en un juego de pantalla completa que el viewport es toda la
pantalla. Aunque se pueden definir muchos.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Activos (Assets)
Un Activo (voy a mantener la nomenclatura del curso en español, sin
embargo siempre colocare el nombre en ingles para que en el momento que usen
otros tutoriales tenga idea de que es cada cosa) es cualquier elemento externo, ya
sea una textura 2D o sprite, o un modelo en 3D, o un archivo de sonido. El cual se
va a utilizar y ejercer acciones sobre el juego.
GameManager Es un patrón usado normalmente al crear videojuegos, que nos permite a los
desarrolladores y/o usuarios utilizar todo el contenido fuera del juego y todo el
contenido del juego, de forma controlada.
GameObjects En unity es el objeto básico que hereda de la Clase objeto. Cada elemento
del juego es un Gameobject.
GameStateManager Otro concepto usado para transferir estados a través del juego. Al hablar de
estados me refiero a datos como la vida del jugador, puntación, enemigos restantes,
a través de diferentes escenarios y/o pantallas. Como Juego > Pausa > juego > menú
principal > Nivel
Transformaciones (transforms) Es una operación matemática que puede ser aplicada sobre los GameObjects
de forma que el objeto cambie su forma predeterminada. Estas operaciones son
utilizadas normalmente para modificar el tamaño. Matemáticamente estamos
hablando de transformaciones de matrices.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Rotación (Rotation)
Es una operación básica en el algebra de matrices que se aplica sobre un
gameobject, de forma tal que el elemento sea capaz de girar sobre un punto de
referencia (generalmente su propio eje)
Traslación (Traslations o positions) Es una operación matricial utilizada para mover un Gameobject en el
espacio.
Scriptable Object Es un gameobject especializado únicamente para guardar contenido.
Componentes (Components) Son las acciones que se agregan a los Gameobject, un Componente se puede
ver como un fragmento de código que agrega funcionalidad determinada a un
gameobject. Un componente no se crea, es agregado automáticamente al
gameobject.
Cámaras Una cámara, es un punto de visión para la escena. Es decir desde una cámara
podemos proporcionarle al jugador visión en un cuadro 2D que muestra la ejecución
de acciones en la escena.
Diferencias entre una cámara y un Viewport Existen sutiles diferencias pero las trabajaremos así. Viewport es el punto
donde se mostraran los eventos de la cámara al jugador en la pantalla. Pueden
existir cualquier cantidad de Viewports enlazados a una misma cámara, el jugador
vera la combinación de todos ellos. Sin embargo una cámara, es el filtro que nos
permite visualizar lo que sucede en el mundo 3D del videojuego, pueden existir
muchas cámaras en muchos ángulos, o la cámara puede tener movimiento libre.
Justo como en las series de televisión.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Texturas 2D
Son todos los activos que provienen de imágenes planas.
Figuras y Geometría (Meshes & Geometry) Los Meshes, o Mesh en ingles son modelos en 3D que toman parte del
juego, cada componente de un modelo, puede ser considerado un Mesh, a estos se
les aplica geometría de matrices Traslación, Rotación, Transformación, para realizar
diferentes acciones en el juego.
Scripting Es el proceso de generar código de comportamiento de los GameObjects.
Creación del Proyecto - Practica 1
Esta práctica la usaremos para acercarnos a la interfaz de Unity, de forma
que empezaremos con el desarrollo de nuestro juego. En este curso se va a
desarrollar el juego que definieron en las especificaciones del juego. Forma tal que
puedan ver la experiencia de desarrollo en vivo en sincronía con ustedes.
El paso 1 es crear el proyecto. Si no han abierto unity, al hacerlo aparecerá este
cuadro, si ya crearon un proyecto de prueba. presionen File -> New Project.
Nombre
Tipo Proyecto
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
En esta ventana emergente seleccionaran únicamente la ruta de instalación Junto
con el nombre del proyecto. Y en el cuadro desplegable abajo a la izquierda
colocaran 2D. No seleccionen ningún paquete, esto se hará mientras se desarrolla.
Imagen elaborada por Moises Chirinos
Seguido verán la interfaz de unity, como la de la foto arriba. Ahora pasare a
explicar cada sección, (Esta apariencia es totalmente personalizable, yo para el
curso usare la de defecto de forma tal que no tengan problema en encontrar las
herramientas)
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen Elaborada por Moises Chirinos
Escena | Juego (Game)
Inspector
Explorador de Proyecto | Consola
Jerarquia
ToolBar
Menu
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Escena (Scene)
Es donde se crearan los niveles, es el explorador de nuestro mundo, donde
podemos revisar los elementos en diferentes perspectivas
Imagen elaborada por Moises Chirinos
1) Forma de visualizar la escena, según su configuración los GameObjects se
mostraran en esta vista de diferentes formas.
2) Formato de Color utilizado
3) Tipo de perspectiva, Activar Sonido, Activar Iluminación, Activar Efectos
4) Gizmos son opciones especiales para la carga y visualización de la escena.
5) Angulo de visión de la Cámara.
Nos permite hacer una visión del juego en sus dientes resoluciones y estados.
Reproducirá la experiencia del jugador de la forma más acertada posible.
1 2 4
5
3
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Perspectiva Ortogonal en 2D
Imagen elaborada por Moises Chirinos
Menú de Gizmos
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Game
Imagen elaborada por Moises Chirinos
1) Tipo de Resolución
2) Tipo de pantalla
3) Estados del los FPS, Iluminación y otros del juego
4) Opciones para la visualización
La pantalla de juego nos permite ver el juego desde la perspectiva del
jugador, incluyendo los datos correspondientes al desarrollo.
Menu
Imagen elaborada por Moises Chirinos
Se encuentran todas las diferentes opciones de unity y su interfaz para el
trabajo
Toolbar
Imagen elaborada por Moises Chirinos
Se encuentras las opciones para manipular el nivel y otros
1
2 3
4
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Hierarchy
Imagen elaborada por Moises Chirinos
Lista de los GameObjects colocados en la escena que se está utilizando.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Project
Donde se crean, organizan y se accede a los Activos (Assets) del juego.
Desde Elementos 3D, a texturas 2D y scripts .
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Inspector
Imagen elaborada por Moises Chirinos
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Desde el inspector se puede configurar cada una de los Gameobject y/o
activos. Se pueden hacer transformaciones a los objetos, y ajustar
configuraciones entre otras actividades.
Consola
Imagen elaborada por Moises Chirinos
Bueno con esto ya crearon su primer proyecto. Ahora empecemos a utilizar
sus ventajas.
Mundo del Juego – Practica 2
Esta sección la utilizaremos para agregar y modificar el mundo del juego, en su
expresión mas básica. Y Algunos trucos que necesitaran a lo largo del desarrollo.
En esta sección NO se hablara de Scrolling, Layers, Scripts o Colisiones. Esto
es para futuras secciones particulares.
En el Project Explorer (Explorador de Proyectos) Presionamos clic derecho sobre
Assets ->Import New Asset. y Buscamos la textura 2D que deseamos colocar como
fondo de pantalla.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Imagen elaborada por Moises Chirinos
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Y listo Unity nos importara el contenido a nuestro proyecto, y creara todas las
referencias para poder utilizarlo sin poder dañar la imagen original.
ya que tenemos el fondo agregado en nuestro Proyecto, es hora de agregarlo a la
escena. Es sumamente simple Arrastre el Paisaje hacia la Escena y listo.
Ahora con el fondo en su "lugar" Vamos a configurar la resolución para nuestro
juego. De la siguiente forma hacemos clic En la pestaña "Game" y revisamos las
resoluciones, si le damos al botón + podemos colocar una resolución especializada,
En Windows 8 las mas mínimas son
Estándar = 1024 x 768
Resolución de pantalla para Snap = 1366x768
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Obtendremos lo siguiente al configurar la necesaria.
Imagen elaborada por Moises Chirinos
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Muy bien ahora hay que configurar la cámara (para situar todo el espacio y
asegurarnos de la perspectiva correcta).
Vamos al Hierarchy seleccionamos Main Cámara. Y en el inspector verificamos que
tenga los siguientes datos
Imagen elaborada por Moises Chirinos
Como vemos aun hay un fondo azul rodeando a la imagen de fondo, de forma tal
que pasaremos a editarla para que se adapte al tamaño de la pantalla. Vamos otra
vez al Hierarchy pero esta vez seleccionamos la imagen de fondo. Y modificamos la
propiedad "Scale" hasta que se coloque
En el caso de este ejemplo será X = 1, Y = 2, Z = 0
La posición del fondo debería ser siempre X = 0, Y = 0, Z = 0
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Sin embargo existe una opción mejor. Podemos cambiar el tamaño de visión de la
cámara. De forma tal que nuestra textura (que probablemente sea un mapa de bits)
no se distorsione.
Para cambiar el tamaño de la cámara la seleccionamos y en el inspector
modificamos el Size y el Ratio x Size.
Imagen elaborada por Moises Chirinos
Aspect Ratio X Size
Size
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Por lo tanto, si la imagen posee un alto de 500. La mitad seria 250, cierto? el
problema es que cada imagen posee una propiedad llamada Pixel to Unit.
Seleccionen en Project a la imagen de Fondo Principal
Imagen elaborada por Moises Chirinos
Como verán en Pixels To Unit aparece 100. Esto quiere decir que cada 100 Pixeles
va a existir una unidad. Por lo tanto se cumple la siguiente proporción
Pixel To Units X Scale Width Calculation Width (Units)
100 1.0 500/100 * 1.0 5 units
100 0.5 500/100 * 0.5 2.5 units
100 2.0 500/100 * 2.0 10 units
50 1.0 500/ 50 * 1.0 10 units
50 0.5 500/ 50 * 0.5 5 units
50 2.0 500/50 * 2.0 20 units
En este caso la imagen es de 499 pixeles de altura. Por lo tanto colocaremos el Size
en 2.49
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Noten que el cuadro de la cámara se reduce sobre el marco de la imagen (Esto es lo
que queremos)
Imagen elaborada por Moises Chirinos
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Como mejorar la compresión de las imágenes Seleccionamos la Imagen de Background en el Project browser, nos vamos al
inspector y vemos sus import setting, pero esta vez notemos el preview pane. ¿Que
colocaremos? El Max Size y el format, en los import Settings.
Cada uno de los tabs en estos import nos permite controlar el comportamiento de la
imagen para los diferentes dispositivos. Y el preview Pane nos permite ver los
cambios (esta ventana se puede maximizar y minimizar).
Así que para cada uno de sus proyectos los dejo experimentar con las diferentes
imágenes.
Supongan el siguiente caso, que poseen una imagen de 2048 x 640. Pero siempre la
configuración por defecto es de 1024x320. Es decir la imagen fue recortada a la
mitad por unity y con ellos la alta definición de la misma (en dado caso)
Esto también sucede a la inversa, si la imagen es de 1024x320 y colocamos la
resolución en 2048. Unity transformara la imagen de forma tal que se pixelara. Lo
ideal para texturas de fondo, es conseguirlas de la resolución exacta para una
importación sin problemas de conversión.
Otra nota es que ciertos formatos de color solo funciona cuando la resolución de la
imagen es un múltiplo de 4.
Esta obra de Moises Chirinos está bajo una Licencia CreativeCommons Atribución-CompartirIgual 4.0 Internacional.
Imagen elaborada por Moises Chirinos
Cada imagen según el formato definido, cambiara su tamaño y esto también se ve
en el cuadro de preview.