Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TALLER DE INVESTIGACION I
PRESENTA:
JOSUE FAVILA GUTIERREZ
JESUS ELISEO OROZCO GUILLEN
INDICE
INDICE 2
INTRODUCCION 7
ANTECEDENTES 7
PROBLEMATICA 7
JUSTIFICACION 8
LIMITACIONES 8
Objetivo General 8
Objetivos específicos 9
AGRADECIMIENTOS 9
2.2.1 Doom 12
2.2.2 Build 12
2.2.3 Quake 13
2.2.4 RenderWare 13
2.2.5 Quake II 13
2.2.6 GoldSRC 13
2.2.7 Unreal 14
2.2.9 Unreal II 14
2.2.10 Source 14
2.2.11 CryEngine 15
2.2.12 Unreal 3 15
2.2.13 Euphoria 15
2.2.14 Dunia 15
CAPITULO 3: UNITY 16
5.3 ASSETS 32
5.4.1 Cubo 33
5.4.2 Esfera 34
5.4.3 Cápsula 35
5.4.4 Cilindro 36
5.4.5 Plano 37
5.4.6 Quad 38
5.17 Escena 58
5.18 GameObjects 60
5.19 GameObject 60
5.25 Eliminar(Remove) 68
5.27 Copiar/Pegar 68
5.29 Transform 69
5.29.1Propiedades 69
5.33 Cambios que se escriben inmediatamente al disco (no necesitan ser guardados)
74
6.2 Entrada 87
6.13 Precarga 93
CONCLUSION 94
FUENTES CONSULTADAS 94
7
INTRODUCCION
Los videojuegos son una industria creciente que en los últimos años a tenido un gran
auge en la sociedad, esto debido en gran manera al aumento en el uso de la
tecnología, lo cual se ha convertido en algo más cotidiano. Además, los videojuegos
se han visto en la necesidad de aumentar sus requerimientos mínimos para poder
permanecer en el mercado actual, lo cual hace que se necesiten herramientas más
poderosas para su realización.
Una de sus ventajas es que para usarse en un PC no se necesita que sean tan
poderosos, además de que maneja un entorno gráfico amigable que facilita su uso y
comprensión.
ANTECEDENTES
Antes del nacimiento de Unity , existieron diversos motores gráficos para el desarrollo
de los videojuegos, algunos fueron:
Doom, Bullid, Quake, RenderWare, Quake II, GoldSRC, Unreal, Quake III, Unreal II,
Source, CryEngine, Unreal 3, Euphoria, Dunia, entre otros.
PROBLEMATICA
que nos llevó a seleccionar este tema, el ayudar al sano entretenimiento de las
personas de cualquier edad.
JUSTIFICACION
Otros de los factores que influenciaron en nuestra decisión fue que los videojuegos
son un tema recurrente en nuestra vida, ya sea por alguna conversación o por la
afición a jugar. El desarrollo de videojuegos fue algo que vino después del gusto, y que
creo debido a la carrera que estamos estudiando, lo cual nos facilita entender todo el
trasfondo detrás de un videojuego.
LIMITACIONES
Otro problema es el no contar con la licencia de uso, ya sea para desarrollar, o para
exportar a un dispositivo.
Un problema fuerte es el no verificar los errores que tiene un juego, tanto en los
escenarios, como en los personajes
Objetivo General
Desarrollar en la plataforma Unity un videojuego que este casi listo para su distribución
oficial, y que sea compatible con las principales plataformas de videojuegos actuales.
Objetivos específicos
➢ Desarrollar un videojuego
AGRADECIMIENTOS
Y además a quienes son ser profesores del Tecnológico nos brindan información para
despertar en nosotros los diferentes intereses que hicieron posibles está investigación.
10
Los juegos son todas aquellas actividades que realizan una o varias personas llamadas
jugadores que, independientemente de su edad, profesión/ocupación o estatus social,
emplean su imaginación o herramientas para crear una situación con un número
determinado de reglas, con el fin de obtener o proporcionar entretenimiento y
diversión. Existen juegos donde el principal objetivo es ganar una competencia, a
estos juegos se les llama competitivos, y también existen juegos en los que solamente
el objetivo es jugar y divertirse, a estos se les conoce como juegos no competitivos.
Generalmente los videojuegos utilizan algún otro tipo de herramienta, además de las
visuales, para la interacción con los jugadores, por ejemplo los altavoces o algún
dispositivo que nos permita estar más inmersos en la experiencia de juego.
No podemos hablar de los videojuegos sin hablar de las plataformas donde los
podemos jugar, pues estos siempre van de la mano a lo largo de la evolución.
Los videojuegos aparecen en la década de los 50’s, cuando aparecen las primeras
computadoras poco después del final de la WWII, mas que nada al final de los 50’s,
cuando aparecen el Tennis for Two (1958) y SpaceWar (1962), los cuales fueron los
pioneros de esta forma de entretenimiento, sin embargo no eran comerciales por ser
en sí unos prototipos y que funcionaban en máquinas que estaban disponibles en las
universidades.
No sería hasta la década de los 70’s donde ahora si veríamos el inicio oficial de los
videojuegos, cuando la compañía Atari saca a la luz Computer Space (1971) y el
famosísimo pong (1972), los cuales funcionaban en maquinas de monedas. Poco
después, en 1972 surge la Magnavox Odyssey, creada por Ralph Baer y distribuida por
phillips en Estados Unidos, y un poco más tarde la exitosa Atari 2600 (1977) con su
innovador sistema de cartuchos intercambiables. Un año más tarde iniciaban las
máquinas de videojuegos en los bares y salones de entretenimiento, esto debido a un
11
juego mata marcianos llamado Space Invaders(1978), uno de los más grandes e
icónicos juegos de la historia. Otros de los juegos importantes de la década fueron
Galaxian (1979), Asteroids (1979) y el igualmente famoso Pac-Man (1980).
En los 80’s Atari empieza a sentir la presión de la competencia, pues surgen Nintendo
y SEGA y surgen consolas como la NES de Nintendo y la Master System de SEGA. Sin
embargo los ordenadores portátiles empiezan a tomar fuerza pues ahora tienen
mejores capacidades gráficas y se vuelven mucho más asequibles para la gente en
general. Es a partir de este momento que los videojuegos se hacen una empresa
mucho más notoria, y donde surgen la mayoría de los géneros que existen hoy en día
(conducción, lucha, estrategia, plataformas, aventura). Y también a finales de la
década de los 80´s más precisamente en 1989 Nintendo saca a la luz el GameBoy, la
consola más popular de bolsillo.
En los 90´s se da el salto a los 16 bits, y empresas como Nintendo y SEGA sacan sus
consolas que soporten este nuevo sistema, como lo son el SNES y la Mega Drive y
además, en 1994 entra a la competencia el gigante Sony con el mega conocido Play
Station 1 (PS1 abreviadamente), mientras que Nintendo y SEGA se actualizan y lanzan
consolas como el Nintendo 64 y la SEGA Saturn. En cuanto a las PC’s, su avance
barre a los demás competidores excepto a Apple. Los juegos ahora necesitan mejores
recursos y surge el género shooter 3D (coloquialmente conocidos como juegos de
disparos). En 2002 Microsoft entra en el sector con el Xbox original y en 2006 Nintendo
lanza la wii, mientras que Sony lanza las actualizaciones de su consola original (PS2 y
PS3).
Finalmente en el 2010 los videojuegos llegan a los dispositivos móviles, como lo son
los Smartphones y las tabletas.
Los videojuegos como tal aparecen en los sistemas de Atari en 1971 con juegos como
Computer Space y Pong. Aunque si bien hay registros de años anteriores, estos no se
toman en cuenta debido a que no eran para distribución comercial, sino que eran más
exclusivos debido a que las plataformas donde se podían usar eran muy caras para las
familias de aquel momento. Desde ese momento, la industria de los videojuegos fue
creciendo de a poco, hasta los 90´s donde el crecimiento fue más notorio y
exponencial. Y, ahora en la actualidad, podemos gozar de un gran número de títulos de
videojuegos que no parece que fuera hace tan poco su inicio.
12
A lo largo de la historia, han existido diversos motores gráficos, que fueron parte de la
evolucion, algunos de ellos son:
2.2.1 Doom
El legendario juego de la empresa Id Software, es considerado un desarrollo basado
en un motor 3D, sin embargo no era más que 2D basado en sprites que representaban
objetos, personajes y cualquier otro elemento que tuviese movimiento. Por ese motivo,
las habitaciones estaban en el mismo plano (no se podía ir al sótano ni a la azotea); y
debido al uso de sprites 2D emulando entornos en tres dimensiones, fue un motor
rápido capaz de correr en equipos 386 con tarjetas VGA estándar para la época (1993).
Este motor que llevó el mismo nombre que el juego para el cual se desarrolló, cobró
tanto éxito que también se usó para otros títulos, como Heretic, HeXen y Doom II,
entre otros.
2.2.2 Build
Ya para 1994 las exigencias de los usuarios en materia gráfica era mayor que el año
anterior. Fue entonces cuando nació este motor un tanto similar a Doom, pero con
ciertas ventajas como la posibilidad de mirar hacia arriba o abajo, dando una mayor
sensación tridimensional. Fue utilizado inicialmente en juegos como Duke Nukem 3D y
Blood; pero debido a su éxito y escaso consumo de recursos (una 486 y una placa
SVGA eran más que suficientes), este motor fue el alma de una enorme sucesión de
títulos.
13
2.2.3 Quake
Este fue el primer motor tridimensional propiamente dicho de la casa Id Software,
compatible con tarjetas 3Dfx (es decir, permitía aceleración por hardware). Gracias a
que las tarjetas gráficas empezaban a implementar el Z-buffering y este motor le
sacaba provecho a esa funcionalidad, se ahorraban grandes cantidades de consumo
del CPU.
Este motor tenía otro truco interno para economizar tiempo de procesamiento:
constaba de un pre-rendering que desechaba zonas del mapa y objetos que el jugador
no podía ver, lo cual recortaba la cantidad de polígonos casi a la mitad.
2.2.4 RenderWare
La primera versión fue lanzada en el año 1996 y llegó hasta una cuarta revisión. Este
motor no fue muy conocido entre el público en general como lo fueron otros motores;
sin embargo RenderWare se sigue usando incluso hoy en día en títulos para PC, XBOX
360, Mac OS X, PSP y Nintendo Wii. Tanto es así que nada más y nada menos que
más de 200 juegos se han basado en este engine 3D (entre ellos: GTA 3, Airpot
Tycoon, Evolution GT y Commandos: Strike Force). Fue el primer motor 3D en permitir
a los programadores alterar parámetros en tiempo real, es decir, no era necesario
recompilar el código para introducir modificaciones en el color o tamaño de un objeto
determinado, lo mismo corría para apartados como la física, relacionados a la
gravedad o inercia (efectos muy primitivos por aquel entonces).
2.2.5 Quake II
También llamado Id Tech II, introdujo plena compatibilidad con OpenGL, lo cual
garantizaba que iba a ser soportado por la gran mayoría de placas gráficas
nativamente.
Introdujo efectos con luces de color y un nuevo modelo de juego cuyo código fue
desarrollado en C y se cargaba desde librerías DLL en vez del tradicional lenguaje
QuakeC, que era propietario.
2.2.6 GoldSRC
Desarrollado en 1998, fue el engine 3D que logró poner a la misma altura las PC con
las consolas de videojuegos, marcando un punto de inflexión en esta constante
evolución. Dio vida a excepcionales juegos como Half-Life y todos sus derivados
(Counter Strike, Team Fortress Classic, Opposing Forces y Blue Shift, entre otros).
Es un motor basado en Quake (aunque con un 70% de código fuente nuevo) con
muchas mejoras adicionales, como la posibilidad de correr mediante Direct3D,
OpenGL o software.
14
2.2.7 Unreal
Del año 1998, se perfilaba como un engine 3D exclusivo para videojuegos FPS (first
person shooter), pero logró consolidarse como algo más que eso: fue el corazón de
títulos del género RPG (role playing game) como Mass Effect. Encarnó al videojuego
homónimo y su versión multijugador llamada Unreal Tournament.
Además de tener su propio lenguaje de scripts (UnrealScript), Epic ofreció un editor de
mapas y de modificaciones del programa llamado UnrealEd. Las posibilidades de
renderizado pasaban tanto por software como por hardware. El motor ofrecía
detección de colisiones, iluminación de colores y un rudimentario método de filtro de
texturas. Aprovechó las extensiones multimedia de los nuevos procesadores de la
época: tanto AMD 3DNow!, como Intel MMX y SSE.
También llamado Id Tech III, hizo un uso extensivo de sombras y shaders así como
también superficies curvas y la posibilidad de usar millones de colores para las
texturas, incluyendo transparencias. Todos los efectos anteriores requerían una tarjeta
3D compatible con OpenGL y una PC de 300 MHz como mínimo. Los títulos más
destacados que aprovecharon este motor, fueron Quake III Arena, Call of Duty, Return
to Castle Wolfenstein.
2.2.9 Unreal II
Concebido en 2002, apadrinó juegos como Lineage II, Ghost Recon 2, Postal 2,
Splinter Cell, Rainbow Six 3, Unreal II (también Tournament 2003 y 2004).
Se trató de una versión mejorada del motor original sumando soporte de física y 64
bits. También agregó efectos especiales como líquidos en movimiento, siendo capaz
de operar diez veces más polígonos que su versión anterior.
2.2.10 Source
Considerado por muchos como uno de los mejores motores 3D, logró una muy buena
calidad (con un muy buen nivel de realismo, tanto en gráficos como en física) con un
consumo moderado de recursos. En su época de lanzamiento (año 2003), no era
necesario contar con computadoras o tarjetas gráficas excesivamente costosas.
Dio lugar a títulos como Half Life 2, Counter Strike: Source, Postal III y Portal, entre
otros.
Hacía uso de avanzadas tecnologías de iluminación, shaders y sombras dinámicas,
con superficies líquidas de alto realismo; como así también del soporte
multiprocesador.
15
2.2.11 CryEngine
Crytek desarrolló este engine para una demo 3D en tarjetas GeForce 3 (llamada X-Isle)
y a causa del interés del público, se terminó gestando el famoso juego Far Cry, para
luego convertirse en el motor de varias consolas de juegos.
Ofrecía grandes detalles visuales, pudiendo generar modelos de agua muy realista,
vegetación muy abundante y ambientes de tamaño casi ilimitado.
2.2.12 Unreal 3
La tercera versión del motor Unreal tiene soporte para DirectX 9, 10 y 11 (además de
XBOX 360, PS3 y Mac OS X); incorporando procesamiento multithreading, soporte
para nVidia PhysX (para procesar física por hardware), efectos mejorados de
partículas, HDR de 64 bits de color y un largo etcétera.
Los títulos más destacados de este motor son Unreal Tournament 3, Mass Effect 1 y 2
y Rainbow Six: Vegas.
2.2.13 Euphoria
Vio la luz gracias al mítico Grand Theft Auto IV. Se trata de un engine 3D que puede
generar animaciones en tiempo real a pedido, gracias a la combinación de inteligencia
artificial, física y biomecánica, dando como resultado una simulación muy natural del
personaje, animal o cuerpo humano.
Esta inteligencia adaptativa permite controlar los movimientos de los personajes, lo
cual suma realismo a las animaciones y da un toque de distinción a cada sujeto.
2.2.14 Dunia
Este motor utilizado en Far Cry 2, conserva sólo el 3% de código que CryEngine, y es
mucho más eficiente en el consumo de recursos que CryEngine 2 (utilizado en el juego
Crysis). Dunia aprovecha las bondades de procesadores multicore y puede generar
escenarios destructibles, IA dinámica y posibilidad de usar mapas de gran tamaño.
16
CAPITULO 3: UNITY
Es un motor gráfico 3D para PC y Mac que viene empaquetado como una herramienta
para crear juegos, aplicaciones interactivas, visualizaciones y animaciones en 3D y
tiempo real. Unity puede publicar contenido para múltiples plataformas como PC, Mac,
Flash(Hasta la version 4), XBox, PS2/3/4, Android, PSVita y iPhone. El motor también
puede publicar juegos basados en web usando el plugin Unity web player.
Los juegos creados en Unity son estructurados en escenas como el motor Gamebryo.
En Unity una escena puede ser cualquier parte del juego, desde el menú de inicio
como un nivel o área del juego.
El motor también incluye un editor de terrenos, desde donde se puede crear un terreno
(como una hoja en blanco), sobre la que los artistas podrán esculpir la geometría del
terreno usando herramientas visuales, pintar o texturizar, cubrir de hierba o colocar
arboles y otros elementos de terreno importados desde aplicaciones 3D como Blender,
3DS Max o Maya.
Unity hace el proceso de producción de juego simple dándole un set de pasos lógicos
para construir cualquier panorama concebible de juego. Establece el uso del concepto
17
Game Object (GO), donde se puede estudiar los componentes del juego en objetos
dóciles, que está hecho de muchos componentes individuales.
Haciendo objetos individuales dentro del juego e iniciando funcionabilidad en ellos con
cada componente que se sume, se puede expandir el juego en una manera progresiva
lógica. Los componentes a su vez tienen variables, esencialmente por los cuales serán
controlados.
18
19
20
Nos pedirá que activemos la licencia, lo cual tendremos que hacer de forma manual ,
seleccionaremos save license request y seleccionaremos la ruta donde la
guardaremos, la cargaremos, luego dentro del Hub iremos a la pestaña de Installs y ya
podremos empezar a descargar el editor, solo damos a ADD y comenzamos la
configuración de instalación.
21
22
Para comenzar, puede hacer clic en New project lo que le llevará a la vista Crear
Proyecto de la Pantalla de Inicio. Para averiguar más, vea la sección sobre esto en
Creando un Proyecto. Alternativamente, si ya tiene un proyecto Unity en su ordenador,
puede abrirlo desde esta pantalla. Vea Abrir un Proyecto para averiguar más.
Creando un Proyecto
Cada vez que inicie el editor de Unity. la Pantalla de Inicio se mostrará. Desde ahí,
puede seleccionar NEW en la esquina superior derecha para cambiar a la vista Crear
Proyecto.
23
Para mostrar la vista Crear Proyecto de la Pantalla de Inicio cuando ya esté en el editor
de Unity, seleccione New Project… desde el menú File.
24
1. El nombre por defecto para New Unity Project pero puede cambiarlo siempre
que quiera. Escriba el nombre con el que quiere llamar a su proyecto en el
campo Project name.
5. Hay una opción para seleccionar Asset packages… para incluir en su proyecto.
Los paquetes de Assets son contenido pre-elaborado, como imágenes, estilos,
efectos de iluminación y y controles de personaje en juego, entre otras útiles
herramientas de creación del juego y contenidos. Los paquetes de assets
ofrecidos aquí son gratuitos, empaquetados con Unity, y puede usarlos para
comenzar con su proyecto. BIEN PUEDE: si no quiere importar esos assets
empaquetados, o no está seguro, simplemente ignore esta opción; puede añadir
estos assets y muchos otros posteriormente vía el editor de Unity. O: Si no quiere
importar esos assets empaquetados ahora, seleccione Asset packages… para
mostrar la lista de assets disponible, marque los que desee, y haga clic en Done.
opciones de paquetes de Assets - puede elegir añadirlas ahora o ignorar esta opción y
añadirlas más adelante
25
La vista Abrir Proyecto de la Pantalla de Inicio muestra todos los proyectos de los que
tiene constancia el editor de Unity. (Si el editor está recién instalado y no conoce la
localización de sus proyectos existentes, le indicará que cree un nuevo proyecto.
26
La vista Abrir Proyecto de la Pantalla de Inicio - Seleccione ‘Abrir’ para localizar y abrir
un proyecto existente que no se esté mostrando
Haga clic en cualquiera de los proyectos que se muestran en la lista para abrirlo. Si su
proyecto no está listado, necesitará indicarle al editor dónde está.
27
Las ventanas más comunes y útiles se muestran en sus posiciones por defecto, abajo:
28
The Project Window (ventana del proyecto) muestra sus assets de librería que están
disponibles para ser usados. Cuando usted importe sus assets a su proyecto, estos
aparecen aquí.
29
La Scene View le permite a usted una navegación visual y editar su escena. La scene
view puede mostrar una perspectiva 2D o 3D dependiendo en el tipo de proyecto en el
que esté trabajando.
30
31
La ventana del inspector le permite a usted visualizar y editar todas las propiedades
del objeto actualmente seleccionado. Ya que diferentes objetos tienen diferentes
propiedades, el layout (diseño) y contenido de la ventana del inspector va a variar.
32
5.3 ASSETS
Un asset es una representación de cualquier item que puede ser utilizado en su juego
o proyecto. Un asset podría venir de un archivo creado afuera de Unity, tal como un
modelo 3D, un archivo de audio, una imagen, o cualquiera de los otros tipos de
archivos que Unity soporta. También hay otros tipos de asset que pueden ser creados
dentro de Unity, tal como un Animator Controller, un Audio Mixer o una Render Texture.
Unity puede trabajar con modelos 3D de cualquier forma que puedan ser creados con
un software de modelado. Sin embargo, hay un número de tipos de objetos primitivos
que pueden ser creados directamente dentro de Unity, principalmente Cube, Sphere,
Capsule, Cylinder, Plane and Quad. Estos objetos son útiles de vez en cuando en
su propio derecho (un plano es utilizado comúnmente como una superficie de suelo
plana, por ejemplo) pero estos también ofrecen una manera rápida de crear
marcadores de posición y prototipos para propósitos de pruebas. Cualquiera de las
primitivas pueden agregarse a la escena utilizando el item apropiado en el menú
GameObject > 3D Object.
33
5.4.1 Cubo
Este es un cubo simple con lados de una unidad de largo, texturizado para que la
imagen se repita en cada una de las seis caras. Como es, un cubo no es un objeto
muy común en la mayoría de los juegos pero una vez es escalado, es muy útil para
paredes, postes, cajas, pasos, y otros items similares. También es un objeto que sirve
como marcador de posición para programadores para utilizar durante el desarrollo
cuando un modelo finalizado todavía no está disponible. Por ejemplo, el cuerpo de
carro puede ser burdamente modelado utilizando una caja alargada con las
dimensiones correctas. Aunque esto no es útil para el juego terminado, es bueno como
una representación simple del objeto para probar el código de control del carro. Ya que
los bordes de un cubo son de una sola unidad de grandes, usted puede revisar las
proporciones de un mesh importado a la escena agregando un cubo cerca de este y
comprando tamaños.
34
5.4.2 Esfera
Esta es una esfera de un diámetro de una unidad (ie, un radio de 0.5 unidad - media
unidad), texturizada para que la imagen entera se envuelva alrededor una vez con la
parte de arriba y abajo “pellizcado-aplastado” en los polos. Las esferas son
obviamente muy útiles para representar pelotas, planetas y proyectiles pero una esfera
semi-transparente puede también hacer un bonito dispositivo GUI para representar el
radio de un efecto.
35
5.4.3 Cápsula
Una cápsula es un cilíndrico con unas tapas hemisféricas al final. El objeto es una
unidad en diámetro y dos unidades de alto (El cuerpo es una unidad y dos tapas son
media unidad cada una). Es texturizada para que la imagen se envuelva exactamente
una vez, pellizcada-apretada en el ápice de cada hemisferio. En particular, la física de
un objeto redondo es a veces mejor que aquellos de una caja para ciertas tareas.
36
5.4.4 Cilindro
Este es un cilindro simple que es dos unidades de alto y una unidad de diámetro,
texturizado para que la imagen se envuelva una vez alrededor de la forma del tubo del
cuerpo pero también aparece separadamente en dos planos, con terminaciones
circulares. Los cilindros son muy útiles para crear postes, varillas y llantas pero usted
debería tener en cuenta que la forma del collider es de verdad una cápsula (no hay un
collider cilindro primitivo en Unity). Usted debería crear un mesh de la forma apropiada
en el programa de modelado y adjuntar un mesh collider si usted necesita un collider
cilíndrico preciso para propósitos de física.
37
5.4.5 Plano
Este es un cuadrado plano con bordes con diez unidades de largo orientado en el
plano XZ del espacio de coordenada local. Es texturizado para que la imagen
completa aparezca exactamente una vez dentro del cuadrado. Un plano es útil para la
mayoría de tipos de superficies planas, como lo son los pisos y las paredes. Un
superficie también se necesita a veces para mostrar imagenes o películas en GUI y
efectos especiales. Aunque un plano puede ser utilizado para cosas como esto, la
primitiva simple quad es a veces un ajuste más natural para la tarea.
38
5.4.6 Quad
La primitiva quad se asemeja al plano pero sus bordes solo son una unidad de largos y
la superficie es orientada en el plano XY del espacio de coordenadas local. También,
un quad es dividido en dos triángulos dónde el plano contiene dos-cientos. Un quad
es útil en casos dónde un objeto de escena debe ser utilizado simplemente como una
pantalla de visualización para la imagen o película. Un GUI simple y una visualización
de información puede ser implementada utilizando quads, al igual que partículas,
sprites e imágenes “impostoras” que sustituyen por objetos sólidos vistos en la
distancia.
Los Assets creados afuera de Unity deben ser traídos a Unity al tener el archivo ya sea
guardado directamente a la carpeta “Assets” de su proyecto, o copiado a esa carpeta.
Para muchos formatos comunes, usted puede guardar su archivo fuente directamente
a la carpeta Assets de su proyecto y Unity será capaz de leerlo. Unity va a notar
cuando usted ha guardado nuevos cambios al archivo y va a re-importarlo si es
necesario.
Cuando usted cree un proyecto de Unity, usted está creando una carpeta - llamada
por su proyecto - que contiene las siguientes sub-carpetas:
39
La carpeta Assets es dónde usted debería guardar o copiar los archivos que usted
quiere utilizar en su proyecto.
Los items que usted ve en la Project Window representan (en la mayoría de casos)
archivos actuales en su computador, y si usted los borra dentro de Unity, usted está
borrándolos de su computador también.
40
Usted se dará cuenta en la imagen de arriba que archivos .meta listados en el sistema
de archivos, pero no son visibles en la Project Window de Unity. Unity crea estos
archivos .meta para cada asset y carpeta, pero esto están ocultos por defecto, por lo
que nos podría ver en su Finder/Explorer tampoco.
La manera más simple de mover o re-nombrar sus assets es siempre hacerlo dentro
de la carpeta de proyecto de Unity. De esta manera, Unity va a automáticamente
mover o re-nombrar el archivo meta correspondiente.
Si usted quiere traer colecciones de assets a su proyecto, usted puede utilizar los
Asset Packages. Ver Asset Packages para más detalles.
Su archivo mesh no necesita tener una animación para ser importada. Si usted utiliza
animaciones, usted tiene la decisión de importar todas las animaciones de un solo
archivo, o importarlas en archivos separados, cada una con una animación.
42
Por ejemplo los import settings para una imagen le va a permitirle a usted escoger si
es importada como una textura, un 2D sprite, o un normal map. Los import settings de
un archivo FBX le permite a usted ajustar la escala, generar normales, o coordenadas
de lightmap, y separar y cortar clips de animación definidos en el archivo.
Haciendo click en un asset de imagen en la ventana del Proyecto muestra los import
settings para ese asset en el Inspector
Para otros tipos de asset, los import settings se verán diferente. Los diferentes tipos de
ajustes que usted verá se relacionan al tipo de asset seleccionado. Aquí hay un
ejemplo de un asset de Audio, con sus import settings (ajustes de importación)
mostradas en el inspector.
43
Un asset de audio seleccionado en la ventana del Proyecto muestra los import settings
del audio para ese asset en el Inspector.
En esta vista, puede acceder y gestionar los assets que pertenezcan a su proyecto.
44
El panel izquierdo del navegador muestra la estructura de carpetas del proyecto como
una lista de jerarquía. Cuando una carpeta es seleccionada de una lista haciendo click,
su contenido va a ser mostrado en el panel a la derecha. Usted puede hacer click en el
triángulo pequeño para expandir o colapsar la carpeta, mostrando cualquier carpetas
anidadas que contenga. Mantenga presionado Alt mientras usted hace click para
expandir o colapsar cualquier carpetas anidas recursivamente.
Los assets individuales son mostrados en el panel de la mano derecha como iconos
que indican su tipo( script, material, sub-carpeta, etc). Los iconos pueden ser
redimensionados usando el deslizador que está en la parte inferior del planel; serán
remplazados por una vista de una lista de jerarquía si el deslizador es movido hacia el
extremo izquierdo. El espacio a la izquierda del deslizador muestra el elemento
actualmente seleccionado, incluyendo una ruta completa al elemento si se está
realizando una búsqueda.
Encima de la lista de la estructura del proyecto hay una sección de Favorites en donde
se puede colocar elementos que frecuentemente se usen para tener un acceso fácil a
estos. Puede arrastrar elementos de la lista de la estructura del proyecto a los
Favoritos y también guardar las consultas de búsqueda ahí. (mirar Buscando abajo).
Justo encima del panel está una “ ruta de navegación” que muestra la ruta a la carpeta
que actualmente se esté viendo. Los elementos separados de la ruta pueden ser
oprimidos(haciendo click) para una navegación fácil alrededor de la jerarquía de la
carpeta. Cuando se busque, esta barra cambia para mostrar el área que se está
buscando( la Carpeta raíz de Assets, la Carpeta Seleccionada o el Asset Store) junto
con una cuenta de assets gratuitos y pagos disponibles en la tienda, separados por
una barra. Hay una opción en sección General de la ventana de preferencias de Unity
para desactivar la visualización de la cuenta de hits del Asset Store si no son
requeridos.
El ‘breadcrumb trail’ (camino con rastros) muestra la ruta a la carpeta que actualmente
está viendo.
45
La ventana del menú proporciona la opción de cambiar a una versión de una columna
de la vista del proyecto, esencialmente solo la estructura de la lista jerarquizada sin la
vista de iconos. El ícono de bloqueo alado del menú le permite “congelar” el contenido
actual del view( ie, que dejen de ser cambiados por acontecimientos en otras partes)
de una manera similar al bloqueo del inspector.
Buscando
46
47
Tenga en cuenta que los filtros funciona mediante la adición de un término extra en el
texto de búsqueda. Un término que empiece con “t:” filtra por el tipo específico del
asset, mientras “l:” filtra por etiqueta(label). Puede escribir estos términos directamente
en el cuadro de búsqueda en vez de usar el menú si se sabe lo que se está buscando
por. Puede buscar más de un tipo de etiqueta(label) a la vez. Agregando varios tipos va
a expandir la búsqueda para incluir todos los tipos específicos. Agregando múltiples
etiquetas(labels) limitara la búsqueda a elementos que tengan todas las etiquetas
específicas.
La búsqueda del Navegador del proyecto también puede aplicarse a los assets
disponibles en la Asset Store de Unity. Si se selecciona Asset Store del menú en la
barra de ruta, se mostrarán todos los elementos gratuitos y de pago de la tienda que
coincidan con su búsqueda. Buscando por tipo y etiqueta (label) funciona de la misma
manera que para un proyecto de Unity. Las palabras de consulta en la búsqueda van a
ser comparadas primero contra el nombre del asset, y luego con el nombre del
paquete (package name), la etiqueta del paquete (package label) y la descripción del
paquete en ese orden (de modo que un elemento cuyo nombre contenga los términos
de búsqueda van a ser mostrado antes que otros con los mismos términos en su
descripción del paquete).
48
Usted puede utilizar las Arrow Keys para moverse alrededor de la escena tal como si
estuviera “caminando” a través de ella. Las flechas de arriba y abajo mueven la cámara
hacia delante y hacia atrás en la dirección en la que esté enfrente. Las flechas de
izquierda y derecha mueven la vista hacia los lados. Deje oprimido la tecla Shift con
una flecha para moverse más rápido.
Enfocarse(Focusing)
49
Moverse, orbitar y acercarse son operaciones claves en la navegación del scene view,
entonces Unity ofrece varias alternativas para realizarlas para una conveniencia
máxima
Cuando el Hand Tool es seleccionado (Acceso Rápido: Q), los siguientes controles del
mouse están disponibles:
Para una eficiencia extra, todos de estos controles pueden ser usados
independientemente de la herramienta transform(transform tool) seleccionada. Los
controles más convenientes dependen en qué mouse o track-pad esté usando:
Ratón de
2 Ratón Mac con
Ratón de tres
Action botones solo un botón o
botones
o track- track-pad
pad
Moverse Dejar oprimido Dejar Dejar oprimido Alt-
Alt y haga click oprimido Command y haga
en el medio y Alt-Control click y arrastre.
arrastre. y haga click
y arrastre.
50
*
5.10 Modo Flythrough
El modo Flythrough le permite navegar el Scene View volando en primera persona
similar a cómo se navega en muchos juegos.
• Ahora puede mover la vista usando el mouse, y usar las teclas WASD para
mover izquierda/derecha adelante/atrás y las teclas Q y E para mover arriba y
abajo.
Scene Gizmo
En la esquina superior derecha del Scene View está el Scene Gizmo. Esto muestra la
orientación de la cámara del Scene View, y le permite modificar rápidamente el ángulo
de visión.
51
Usted puede hacer click en cualquiera de los brazos de los ejes conicos para snap la
Camara de la Scene View al eje que representa (eg vista de encima, vista lateral
izquierdo, vista frontal, etc.)
Usted tambien puede toggle la proyeccion de la scene view entre los modos
perspective y orthographic (ortografico) (a veces llamado ‘isometric’) al hacer click en
el cubo en el centro del Scene Gizmo, o el texo debajo de este. La vista orthographic
no tiene perspectiva, y es util combinarlo con uno de los brazos de los ejes conicos
para obtener una elevacion frontal o lateral, o una vista plana.
Si usted lograr llevar su scene view a un estado raro (al revés, o un ángulo que
simplemente encuentra confuso!) usted puede siempre usar shift-click en el cubo al
centro del Scene Gizmo para lograr una vista de perspectiva con un ángulo que esté
mirando la escena del lado y un poco desde arriba.
En un Mac con un trackpad, usted puede arrastrar con dos dedos para acercar la
vista.
Usted también puede usar tres dedos para simular el efecto de hacer click en los
brazos del Scene Gizmo: arrastre arriba, izquierda, derecha o abajo para ajustar la
cámara del Scene View a la dirección correspondiente. En OS X 10.7 “Lion” puede que
tenga que cambiar los ajustes de su trackpad para poder habilitar esta función:
52
En el centro del gizmo Translate (trasladar), hay tres pequeños cuadrados que pueden
ser utilizados para arrastrar el objeto dentro de un solo plano (i.e. los dos ejes pueden
moverse a la vez mientras que el tercero se mantiene quieto). Si usted tiene un mouse
de tres botones, usted puede hacer click en el botón del medio y arrastrar para ajustar
los ejes que fueron movidos recientemente (la flecha para este eje va a cambiar a
amarilla). Si usted mantiene shift presionado mientras hace click y arrastra en el centro
del Gizmo de Translate, el centro del gizmo cambia a ser un cuadrado plano, indicando
que usted puede mover el objeto alrededor del plano relativo a la manera en que la
cámara de la Scene View está mirando.
botón del medio del mouse y arrastrando. Piense en los círculos rojos, verdes y azules
como hacer una rotación alrededor de los ejes rojo, verdes y azules que aparecen en el
modo de traslación. (Rojo es el eje-x, verde es el eje-y, y azul es el eje-z.) Finalmente,
el círculo más externo puede ser utilizado para girar el objeto alrededor del eje-z de la
scene view. Usted puede pensar de esto como girar alrededor del espacio de pantalla.
Tenga en cuenta que en modo 2D, el eje Z no puede ser cambiado en la escena
usando los gizmos. No obstante, es útil para ciertas técnicas de scripting usar el eje Z
para otros motivos; usted todavía puede establecer el eje Z del Inspector en aquellos
casos.
Los Gizmo Display Toggles son usados para definir la ubicación de cualquier
Transform Gizmo.
Para la Posición:
Para la Rotación:
Usted puede cambiar la distancia de la unidad que está siendo usada en unit snapping
usando el menú Edit->Snap Settings…
54
Con esto, usted puede ensamblar sus mundos muy rápido. Por ejemplo, puede alinear
tramos de carretera precisamente en un juego de carreras, o posicionar artículos
power up en los vértices de un mesh.
• Mueva su cursor encima del vértice de su mesh que quiera usar como punto de
pivote.
• Sostenga oprimido el botón izquierdo una vez su cursor esté encima del vértice
deseado y arrastre su mesh junto a cualquier otro vértice en otro mesh.
• Suelte el botón del mouse y la tecla V cuando esté feliz con los resultados.
55
Use los botones en la Barra de Herramientas para controlar el Editor Play Mode y ver
cómo se jugará el juego publicado. Mientras en Play mode, cualquier cambio que haga
será temporal, y se va reset cuando se salga de Play mode. El UI del Editor se va a
escurecer para avisarle de esto.
56
Botón: Función:
Display Oprima esto para escoger de una lista de cámaras si
tiene varias cámaras en la escena. usted puede
asignar Displays a las cámaras en el módulo Camera,
debajo del desplegable Target Display. Este es
configurado a “Display 1” por defecto.
Aspect Selecciona valores diferentes para probar cómo su
juego se verá en monitores con diferentes relaciones
de aspecto. Este es configurado a “Free Aspect” por
defecto.
Scale slider Esto le permite a usted acercarse y examinar áreas de
la pantalla del juego con más detalla, o se puede alejar
para ver la pantalla completa dónde la resolución de la
pantalla sea mayor que el tamaño de la ventana de la
vista del juego. usted también puede utilizar la scroll
wheel (rueda de desplazamiento) y el botón de la mitad
del mouse para hacer esto mientras el juego está
parado o pausado.
Maximize Habilite esto para que la vista del juego se maximice a
on Play 100% de su ventana del Editor para una pre-
visualización de pantalla completa cuando ingrese al
Play Mode (modo de juego).
Mute audio Habilite esto para mute cualquier audio dentro del
juego cuando ingrese al modo de juego.
Stats Oprima esto para toggle (activar/desactivar) la ventana
superpuesta de Statistics (estadísticas), que contienen
estadísticas de renderizado del audio y gráficas de su
juego mientras usted está en el modo de juego.
Gizmos Oprima esto para toggle (activar/desactivar) la
visibilidad de Gizmos. Para solamente ver ciertos tipos
de Gizmo durante el modo de juego, oprima la flecha
desplegable alado de la palabra “Gizmos” y solamente
revise las casillas de los tipos de Gizmo que quiere ver.
57
Junto al nombre de cada componente están los ajustes para el icono y los gizmos
asociado a él. El ajuste del Icono revela otro menú emergente que le permite a uno
escoger entre una selección de iconos predefinidos o un icono personalizado definido
por una textura.
El ajuste 3D Gizmos encima del menú se refiere a los iconos Gizmo. Con el ajuste
activado, los iconos mostrarán la perspectiva de la cámara (ie, iconos para objetos
más cerca van a estar más grande de aquellos objetos distantes), de lo contrario,
serán el mismo tamaño, independientemente de la distancia. El deslizador alado de
casilla de verificación, le permitirá variar el tamaño de los iconos, lo que puede ser útil
para reducir el desorden cuando hayan muchos gizmos visibles.
58
5.17 Escena
Las escenas contienen los objetos de su juego. Pueden ser usadas para crear un
menú principal, niveles individuales, y cualquier otra cosa. Piense en cada archivo de
escena, como un nivel único. En cada escena, usted va a colocar su ambiente,
obstáculos, y decoraciones, el diseño esencial y la construcción de su juego en
pedazos.
59
Una nueva escena vacía, con los objetos 3D predeterminados - una cámara y una
directional light.
Cuando usted cree un nuevo proyecto de Unity, su scene view le va a mostrar una
nueva escena. Esta es una escena untitled (sin titulo) y unsaved ( sin guardar). La
escena estará vacía al menos por objetos predeterminados - ya sea una cámara
ortográfica, o una cámara perspectiva y una directional light, dependiendo si comenzó
el proyecto en modo 2D o 3D.
60
5.18 GameObjects
El GameObject es el tipo de objeto más importante en Unity. Es bien importante
entender qué es un GameObject, y cómo puede ser usado.
Cuatro diferentes Game Objects, un personaje animado, una luz, un árbol y una fuente
de audio
5.19 GameObject
Los GameObjects son objetos fundamentales en Unity que representan personajes,
props, y el escenario. Estos no logran nada por sí mismos pero funcionan como
contenedoras para Components, que implementan la verdadera funcionalidad. Por
ejemplo, un objeto Light es creado al adjuntar un componente Light a un GameObject.
61
Detalles
View del juego. Si un GameObject no tuviera un Transform Component, sería nada más
que alguna información en la memoria del computador. Efectivamente no existiría en el
mundo.
Otros Components
Mirando la Cámara Principal del GameObject, se puede ver que contiene una
colección diferente de Components. Especialmente, un Camera Component, a
GUILayer, un Flare Layer, y un Audio Listener. Todos estos Components proporcionan
funciones adicionales al GameObject. Sin estas, no habría nada representando los
gráficos del juego para la persona que está jugando! Rigidbodies, Colliders, Particles, y
Audio son todos diferentes Components (o combinaciones de Components) que
pueden ser agregados a cualquier GameObject.
Recuerde que siempre puede utilizar el Inspector para ver qué Components son
adjuntados al GameObject seleccionado. A medida que los Components son
agregados y quitados, el Inspector va a siempre mostrar cuáles están actualmente
adjuntos. Usted va a utilizar el Inspector para cambiar todas las propiedades de
cualquier Component (incluyendo scripts).
Otra opción es usar el Component Browser, que puede ser activado con el botón Add
Component en el inspector del objeto.
64
Si quiere saber más acerca del uso de un component en particular, puede leer sobre
cualquiera de ellos en la página relevante de referencia del Component. También
puede acceder la página de referencia de un Component en Unity haciendo click en el
pequeño ? en el encabezado del Component en el Inspector.
65
66
67
68
Las propiedades restantes en el Audio Clip son todas propiedades con valor. Estas
pueden ser ajustadas directamente desde el Inspector. Las propiedades de valor del
Audio Clip son todas palancas, valores numéricos, campos desplegables, pero las
propiedades con valor también pueden ser strings de texto, colores, curvas, y otros
tipos. Puede leer más acerca de estos y sobre editar propiedades de valor en la página
acerca de editing value properties](EditingValueProperties.html).
Reset
Este comando restablece los valores que tenían las propiedades del component antes
de la más reciente sesión de edición.
5.25 Eliminar(Remove)
Un comando Remove Component está disponible para casos en dónde ya no se
necesite el component adjunto al GameObject. Observe que hay algunas
combinaciones de components que dependen de cada uno (eg, Hinge Joint solo
funciona cuando un Rigidbody también esté adjunto); verá un mensaje de advertencia
si trata de eliminar components que otros dependan.
5.27 Copiar/Pegar
El comando Copy Component almacena el tipo y los ajustes actuales de la propiedad
de un Component. Estos luego pueden ser pegados a otro component del mismo tipo
con Paste Component Values. También, puede crear un nuevo component con los
valores copiados en un objeto usando Paste Component As New.
69
5.29 Transform
El componente Transform determina la Position, Rotation, y Scale de cada objeto en la
escena. Cada GameObject tiene un Transform.
5.29.1Propiedades
Propiedad: Función:
Position Posición del Transform en coordenadas X, Y, Z.
Rotation Rotación del Transform alrededor de los ejes X, Y, Z,
medido en grados.
Scale Scale (Escala) del Transform a lo largo de los ejes X, Y
y Z. Un valor de “1” es el tamaño original (el tamaño
con el cual el objeto fue importado).
Los valores de posición, rotación, y escala de un Transform son medidos relativamente
al padre del Transform. Si el Transform no tiene padre, las propiedades son medidas en
el espacio del mundo.
70
Para guardar cambios a la escena, seleccione Save Scene en el menú File, o pulse
Ctrl/Cmd + S. Esto guarda los cambios actuales a la escena y hace un “Guardar
Proyecto” (más adelante).
71
Usar “Save Project” no guarda los cambios de la escena, sólo los del proyecto. Puede
querer, por ejemplo, guardar su proyecto pero no los cambios de su escena si ha
usado una escena temporal para hacer algunos cambios a un prefab.
Los cambios a todo el proyecto que son guardados al hacer “Save Project” incluyen:
Toda la configuración para cada elemento del menú “Project Settings”, como ejes de
entrada a medida, etiquetas definidas por el usuario o capas, y las fuerzas físicas
gravitacionales son salvadas al hacer “Save Project”.
72
73
74
• Parámetros materiales
• Prefabs
75
Las luces(lights) pueden ser agregadas a su escena desde el menú del GameObject-
>Create Other. Una vez una luz haya sido agregada, usted puede manipularla como
cualquier otro GameObject. Adicionalmente, puede agregar un Light Component a
cualquier GameObject seleccionado usando Component->Rendering->Light.
76
77
78
Adicional a estos, otros lenguajes .NET pueden ser utilizados con Unity si estos
compilan un DLL compatible - ver aquí para más detalles.
Aprender el arte de programar y el uso de estos lenguajes en particular, va más allá del
alcance de esta introducción. Sin embargo, hay muchos libros, tutoriales y otros
recursos para aprender cómo a programar con Unity. Vea la Learning section de
nuestra página web para más detalles.
El nuevo script será creado en la carpeta que usted haya seleccionado en el Panel del
Proyecto. El nuevo nombre del archivo script será seleccionado, pidiéndole a usted
que ingrese otro nuevo nombre.
79
Es una buena idea ingresar el nombre del nuevo script en este punto en vez de editarlo
después. El nombre que usted ingrese será utilizado para crear el texto inicial dentro
del archivo, como es descrito abajo.
using UnityEngine;
using System.Collections;
}
}
cuando el archivo fue creado. El nombre de la clase y el archivo debe ser el mismo
para permitirle al componente script en ser adjuntado al GameObject.
La primera cosa para tener en cuenta son dos funciones definidas dentro de la clase.
La función Update es el lugar para colocar el código que se encargará de la
actualización por frame para el GameObject. Este puede incluir movimiento, acciones
de trigger y responder al input del usuario, básicamente cualquier cosa que necesite
ser manejado en el tiempo durante el gameplay. Para que la función Update haga su
trabajo, a veces es útil configurar variables, leer preferencias y hacer conexiones con
otros GameObjects antes de que cualquier acción del juego tome lugar. La función
Start va a ser llamada por Unity antes de que el gameplay comience (ie, antes de que
la función Update sea llamada por la primera vez) y es un lugar ideal para hacer
cualquier inicialización.
#pragma strict
function Start () {
function Update () {
Aquí, las funciones Start y Update tienen el mismo significado pero la clase no está
explícitamente declarada. El script en sí mismo es asumido para definir la clase; éste
va a derivar implícitamente desde MonoBehaviour y toma su nombre desde el nombre
del archivo (filename) del asset script.
81
Una vez adjuntado, el script va a comenzar a funcionar cuando usted presione Play y
corra el juego. Usted puede revisar esto al agregar el siguiente código en la función
Start:-
Al igual que otros Componentes tienen propiedades que son editables en el inspector,
usted puede permitir valores en su script a ser editados desde el Inspector también.
using UnityEngine;
using System.Collections;
}
}
82
Unity crea la etiqueta del Inspector introduciendo un espacio dónde una mayúscula
ocurra en el nombre de la variable. Sin embargo, esto es para propósitos netamente de
pantalla y usted debería siempre utilizar el nombre de la variable dentro de su código.
Si usted edita el nombre y presiona Reproducir, usted verá que el mensaje incluye el
texto que usted ingreso.
En C#, usted debe declarar una variable como pública para verla en el Inspector. En
UnityScript, las variables son públicas por defecto al menos de que usted especifique
de que deberían ser privadas:
#pragma strict
function Start () {
Unity le va a permitir a usted cambiar el valor de las variables del script mientras el
juego esté corriendo. Esto es muy útil para ver los efectos de cambios directos sin
tener que parar y reiniciar. Cuando el modo de juego termine, los valores de las
variables se van a reset a lo que sea que estaban antes de que usted pusiera
Reproducir. Esto asegura que usted está libre de ajustar las configuraciones de sus
objetos sin miedo de hacer un daño permanente.
Similarmente, usted puede cambiar el color del material del Renderer o la masa del
Rigidbody con un efecto correspondiente en la apariencia o comportamiento del
GameObject. Para la mayoría de veces, scripting también modifica las propiedades del
Componente para manipular GameObjects. La diferencia, en cambio, es que un script
puede variar un valor de una propiedad gradualmente en el tiempo o en respuesta al
input del usuario. Al cambiar, crear y destruir objetos en el momento indicado,
cualquier tipo de gameplay puede ser aplicado.
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
}
function Start () {
var rb = GetComponent.<Rigidbody>();
}
Una vez usted tenga una referencia a la instancia del Componente, usted puede
configurar los valores de sus propiedades como usted quiera en el Inspector:
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
// Add a force to the Rigidbody.
rb.AddForce(Vector3.up * 10f);
84
}
Tenga en cuenta que no hay razón para que usted no pueda tener más de un script
personalizado adjunto al mismo objeto. Si usted necesita acceder un script desde otro,
usted puede utilizar GetComponente y simplemente utilizar el nombre de la clase script
(o nombre del archivo) para especificar el tipo de Componente que usted quiere.
Usted puede ahora arrastrar un objeto desde la escena o panel de Jerarquía a esta
variable para asignarlo. La función GetComponent y las variables de acceso a
Componentes están disponibles para este objeto como cualquier otro, entonces usted
puede utilizar código como el siguiente:
void Start() {
// Start the enemy ten units behind the player character.
transform.position = player.transform.position - Vector3.forward * 10f;
}
}
85
using UnityEngine;
void Start() {
waypoints = new Transform[transform.childCount];
int i = 0;
Usted también puede ubicar un objeto hijo especifico por el nombre utilizando la
función Transform.Find :
transform.Find("Gun");
Esto puede ayudar cuando un objeto tiene un hijo que puede ser agregado y quitado
durante el tiempo de juego. Un arma que puede ser recogida y dejada en el suelo es
un buen ejemplo de esto.
GameObject player;
void Start() {
player = GameObject.Find("MainHeroCharacter");
}
Un objeto o una colección de objetos también pueden ser ubicadas por su tag
( e t i q u e t a ) u t i l i z a n d o l a s f u n c i o n e s G a m e O b j e c t . F i n d W i t h Ta g y
GameObject.FindGameObjectsWithTag .
GameObject player;
GameObject[] enemies;
void Start() {
player = GameObject.FindWithTag("Player");
enemies = GameObject.FindGameObjectsWithTag("Enemy");
}
87
6.2 Entrada
El ejemplo más obvio del comportamiento distinto entre plataformas es en los
métodos de entrada ofrecidos por el hardware.
function Gears() {
if (Input.GetKeyDown("p"))
currentGear++;
else if (Input.GetKeyDown("l"))
currentGear--;
return currentGear;
}
Una ventaja de envolver los llamados de API en una clase como esta es que todos
ellos están concentrados en un solo archivo fuente, y en consecuencia, será fácil su
localización y reemplazo. Sin embargo, lo más impontante es que debes diseñar tus
funciones de entrada de acuerdo al significado lógico de las entradas en tu juego. Esto
será de ayuda para aislar del resto del código del juego el método específico de
entrada usado con una plataforma en particular. Por ejemplo, la función Gears de
arriba podría ser modificada para que la entrada real provenga de toques en la pantalla
de un dispositivo móvil. Si se usa un integer para representar la indumentaria
escogida, esto funcionará bien en todas las plataformas; pero si se mezcla con el resto
del código los llamados de API específicos a la plataforma, esto causará problemas.
Puedes ver conveniente el utilizar compilación dependiente de la plataforma para
combinar las diferentes implementaciones de las funciones de entrada en el mismo
archivo fuente, para evitar intercambios manuales.
Al igual que con los llamados de API, el problema puede ser manejado de forma
parcial representando la entrada con valores lógicos que son luego usados por el resto
del código del juego. Por ejemplo, un gesto de “pellizco” para dar zoom en un móvil
podría ser reemplazado por un botón/atajo de + y - en la version de escritorio; la
función de entrada podría simplemente devolver un valor float que especifique el factor
de zoom. Igualmente, podría ser posible usar un tap con dos dedos en móviles para
reemplazar el clic con el botón derecho del mouse. Sin embargo, si las propiedades
del dispositivo de entrada son una parte integral del juego, entonces no puede ser
posible remodelarlos en una plataforma diferente. Esto puede significar que el juego no
puede ser portado a todas ellas, o que la entrada y/o la mecánica de juego necesiten
ser modificadas ampliamente.
89
90
91
En este punto, observe que cada una de sus escenas tienen un valor de indice
diferente. Scene 0 es la primera escena que va a cargarse cuando se construya el
92
juego. Cuando quiera cargar una escena nueva, use Application.LoadLevel() dentro de
sus scripts.
Si quiere eliminar una escena de la lista, haga click para subrayar la escena y oprima
Command-Delete. La escena va a desaparecerse de la lista y no va a ser incluida en la
construcción.
Cuando esté listo de publicar lo que ha construido, seleccione una Platform y esté
seguro que el logo de Unity esté alado de la plataforma; si no está entonces haga click
en el botón Switch Platform para dejar que Unity sepa para qué plataforma quiere
construirla. Finalmente oprima el botón Build . Ahí va a poder seleccionar el nombre y
la ubicación del juego usando un dialogo estándar para guardar. Cuando haga click en
Save, Unity construirá su juego pronto. Es así de sencillo. Si está inseguro de dónde
guardar su juego construido, considere guardarlo en la carpeta raíz de su proyecto. No
puede guardar la construcción en la carpeta de Assets.
93
• Cuando un nuevo nivel cargue, todos los objetos del nivel anterior son
destruidos. Para prevenir esto, use DontDestroyOnLoad() en cualquier objeto que
no quiera que sea destruido. Esto es comúnmente usado para mantener música
reproduciendo mientras se cargue un nivel, o para game controller scripts que
hacen que se mantenga el estado del juego y el progreso.
6.13 Precarga
Construcciones publicadas automaticamente precargan todos los assets en una
escena cuando la escena carga. La excepción a esta regla es Scene 0. Esto es porqué
la primera escena es usualmente un spashscreen, que uno quiere mostrar lo más
rápido posible.
Para asegurarse que todo su contenido haya sido precargado, puede crear una escena
vacía que llame Application.LoadLevel(1). En las build settings haga que el indice de
esta escena sea 0. Todos los niveles posteriores serán precargados.
94
CONCLUSION
Realizar esta investigación y documentación de una herramienta tan práctica como es
Unity nos ayuda a darnos cuenta de la dificultad real que tiene el desarrollo de los
juegos que tanto nos gustan y que gracias a estás mismas su desarrollo es más
llevadero y menos tedioso a comparación de como lo era hace unos 20 años.
También nos dejó una mayor estimación a aquellos que se dedican por completo al
desarrollo de los videojuegos, ya que gracias a su dedicación de miles de horas
nosotros podemos disfrutar de algunas obras maestras en nuestro tiempo, y nos
ayuda a respetarlos más debido a que pertenecemos a un área en común y sabemos
lo que cansado que puede ser el estar sentados y pensando que hacer para que
nuestros trabajos sean más sobresalientes y ofrezcan algo más que la competencia.
FUENTES CONSULTADAS
Manual De Unity. (s. f.). Recuperado 10 de mayo de 2020, de https://
docs.unity3d.com/es/530/Manual/UnityManual.html
M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de
2020, de https://www.masterd.es/blog/que-es-unity-3d-tutorial/
M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de
2020, de https://www.masterd.es/blog/que-es-unity-3d-tutorial/