scieee Science in your language
[Es] (orig)

Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D

Abstract

Unity es una de las herramientas de desarrollo de videojuegos y aplicaciones interactivas más utilizadas en la actualidad [1]. Uno de los principales motivos de su rápida aceptación es que ofrece soporte para una gran cantidad de plataformas, de manera que tras el desarrollo de cualquier aplicación es posible generar ejecutables para todas ellas sin tener que replantear el trabajo para cada una. Sin embargo, en el proceso de trasladar un videojuego o aplicación a otros dispositivos, es recomendable considerar sus características particulares para optimizar la experiencia a nivel de control o de rendimiento, entre otros. Asimismo, Unity también da soporte a plataformas de realidad virtual, donde es especialmente interesante explorar la adaptación de aplicaciones existentes y probar con nuevas formas de control, según las posibilidades de cada dispositivo. En este proyecto se discutirán las distintas plataformas soportadas por Unity, así como sus principales características como herramienta. Se abordará el desarrollo de una aplicación en 3D que pueda servir como base para un videojuego, y su distribución en varias plataformas, así como su posterior adaptación a dispositivos de realidad virtual.

Read accessible full text

Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D

Author: SELMA GARCÍA, ALEJANDRO
Publisher: Universitat Politècnica de València
Year: 2017
Source: https://riunet.upv.es/bitstream/10251/84815/1/SELMA%20-%20Desarrollo%20de%20aplicaciones%20para%20m%c3%baltiples%20plataformas%20y%20uso%20de%20realidad%20virtual%20con%20Unity%203D.pdf
Escuela Técnica Supe io de Ingenie ía In o má ica
Uni e si a Poli ècnica de València
Desa ollo de aplicaciones pa a
múl iples pla a o mas y uso de
ealidad i ual con Uni y 3D
P oyec o Final de Ca e a
Ingenie ía in o má ica
Au o : Alejand o Selma Ga cía
Di ec o : Manuel Agus í Melcho
14 de junio de 2017
Índice gene al
1. In oducción y obje i os 4
1.1. In oducción............................ 4
1.2. Obje i os ............................. 5
1.3. Al e na i as............................ 6
1.4. Es uc u a de la memo ia . . . . . . . . . . . . . . . . . . . . 7
2. Desc ipción gene al de Uni y 9
2.1. P esen ación y ca ac e ís icas p incipales . . . . . . . . . . . . 9
2.2. Ven ajas.............................. 10
2.2.1. En o no de abajo . . . . . . . . . . . . . . . . . . . . 10
2.2.2. Po abilidad . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3. Documen ación . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4. Asse S o e e impo ación de ecu sos . . . . . . . . . . 14
3. Compa a i a en e licencias y pla a o mas sopo adas 15
3.1. Licenciasdeuso.......................... 15
3.2. Pla a o mas............................ 17
3.2.1. Windows, MacOS y GNU/Linux . . . . . . . . . . . . 17
3.2.2. WebGL .......................... 17
3.2.3. iOS............................. 17
3.2.4. And oid .......................... 18
3.2.5. Windows S o e Apps pa a Windows Phone y HoloLens 18
3.2.6. Disposi i os de ealidad i ual . . . . . . . . . . . . . 20
3.2.7. Tizen............................ 20
3.2.8. Fi eOS .......................... 21
3.2.9. Videoconsolas . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.10.And oidTV........................ 22
3.2.11. OS............................ 22
3.2.12. Samsung SMART TV . . . . . . . . . . . . . . . . . . 22
1
4. Desa ollo de una aplicación 3D con Uni y 24
4.1. C eación de un nue o p oyec o . . . . . . . . . . . . . . . . . . 24
4.2. Obje os y sis emas de coo denadas . . . . . . . . . . . . . . . 25
4.3. Cons ucción del escena io . . . . . . . . . . . . . . . . . . . . 27
4.4. Iluminación de la escena . . . . . . . . . . . . . . . . . . . . . 29
4.4.1. O ganizando la je a quía de obje os . . . . . . . . . . . 30
4.5. Inco po ando al jugado . . . . . . . . . . . . . . . . . . . . . 31
4.5.1. Mi ando al ededo . . . . . . . . . . . . . . . . . . . . 32
4.5.2. Mo imien o del jugado po el escena io . . . . . . . . 38
4.6. Implemen ación de las mecánicas p incipales . . . . . . . . . . 41
4.6.1. Enemigos mó iles . . . . . . . . . . . . . . . . . . . . . 41
4.6.2. Dispa os enemigos y de ección de daño . . . . . . . . . 43
4.6.3. Golpeando enemigos . . . . . . . . . . . . . . . . . . . 49
4.6.4. Regene ación de enemigos . . . . . . . . . . . . . . . . 54
4.7. In e az de usua io (HUD) . . . . . . . . . . . . . . . . . . . . 56
4.7.1. Pan allas de ic o ia y in de juego . . . . . . . . . . . 60
5. Mejo a del aspec o g á ico y e ec os de sonido 66
5.1. Ma e iales............................. 66
5.2. Tex u as basadas en sp i es . . . . . . . . . . . . . . . . . . . 67
5.2.1. Tex u as del cielo . . . . . . . . . . . . . . . . . . . . . 68
5.3. Modelos 3D pe sonalizados . . . . . . . . . . . . . . . . . . . . 69
5.3.1. Impo ación de modelos con Blende . . . . . . . . . . 70
5.3.2. Impo ación de modelos de la Asse S o e . . . . . . . 72
5.4. E ec os de pa ículas . . . . . . . . . . . . . . . . . . . . . . . 74
5.5. Sonidos .............................. 75
5.5.1. Rep oducción de sonidos po e en os . . . . . . . . . . 77
5.6. Menúdeopciones......................... 78
6. E olución de la Realidad Vi ual y opciones disponibles en
Uni y 83
6.1. De inición e his o ia . . . . . . . . . . . . . . . . . . . . . . . . 83
6.2. Pla a o mas ac uales de ealidad i ual y sopo e en Uni y . . 86
6.2.1. OculusRi ........................ 86
6.2.2. Google Ca dboa d . . . . . . . . . . . . . . . . . . . . 88
6.2.3. Dayd eam......................... 89
6.2.4. S eam VR/HTC Vi e . . . . . . . . . . . . . . . . . . . 90
6.2.5. PlayS a ion VR . . . . . . . . . . . . . . . . . . . . . . 91
6.2.6. Samsung Gea VR . . . . . . . . . . . . . . . . . . . . 92
6.2.7. Mic oso HoloLens . . . . . . . . . . . . . . . . . . . . 93
6.3. Sopo e en Uni y pa a pla a o mas de ealidad i ual . . . . . 95
2
ÍNDICE GENERAL
7. Adap ación de la aplicación a disposi i os de Realidad Vi -
ual 97
7.1. Impo ación del SDK Google VR . . . . . . . . . . . . . . . . 97
7.2. Adap ación al iso Ca dboa d . . . . . . . . . . . . . . . . . 98
7.2.1. Cambios en las mecánicas . . . . . . . . . . . . . . . . 99
7.2.2. Visión es e eoscópica . . . . . . . . . . . . . . . . . . . 105
7.2.3. HUD y menú de opciones pa a iso es Ca dboa d con
ga illo ...........................107
7.2.4. Compilación y despliegue en disposi i o . . . . . . . . . 109
7.3. Adap ación a iso con con olado . . . . . . . . . . . . . . . 111
7.3.1. HUD y menú de opciones pa a e sión en RV con con-
olado ..........................117
7.3.2. Compilación y despliegue . . . . . . . . . . . . . . . . . 117
8. Gene ación de ejecu ables pa a o as pla a o mas 121
8.1. PC, MacOS y GNU/Linux . . . . . . . . . . . . . . . . . . . . 121
8.2. And oid ..............................122
8.3. iOS.................................125
8.4. WebGL ..............................125
9. Conclusiones y abajos u u os 127
3
Capí ulo 1
In oducción y obje i os
1.1. In oducción
Uni y es una de las he amien as de desa ollo de ideojuegos y aplica-
ciones in e ac i as más u ilizadas en la ac ualidad [1]. Uno de los p incipales
mo i os de su ápida acep ación es que o ece sopo e pa a una g an can idad
de pla a o mas, de mane a que as el desa ollo de cualquie aplicación es
posible gene a ejecu ables pa a odas ellas sin ene que eplan ea el a-
bajo pa a cada una. Sin emba go, en el p oceso de aslada un ideojuego o
aplicación a o os disposi i os, es ecomendable conside a sus ca ac e ís icas
pa icula es pa a op imiza la expe iencia a ni el de con ol o de endimien-
o, en e o os.
Asimismo, Uni y ambién da sopo e a pla a o mas de ealidad i ual,
donde es especialmen e in e esan e explo a la adap ación de aplicaciones
exis en es y p oba con nue as o mas de con ol, según las posibilidades de
cada disposi i o.
En es e p oyec o se discu i án las dis in as pla a o mas sopo adas po
Uni y, así como sus p incipales ca ac e ís icas como he amien a. Se abo -
da á el desa ollo de una aplicación en 3D que pueda se i como base pa a
un ideojuego, y su dis ibución en a ias pla a o mas, así como su pos e io
adap ación a disposi i os de ealidad i ual.
El concep o de ealidad i ual puede e e i se a un conjun o de ecnolo-
gías bas an e amplio, pe o en es e caso la adap ación es a á especialmen e
en ocada a disposi i os mó iles que se puedan emplea como iso es que si-
mulen un en o no idimensional, con el que el usua io pueda in e ac ua de
4

CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS
di e sas mane as. Una de las pla a o mas que hacen uso de es a ecnología
es Google Ca dboa d, que pe mi e emplea un elé ono mó il y un sopo e
de ca ón, o iso es de cos e ela i amen e bajo, pa a accede a la ealidad
i ual de una o ma muy asequible. Es o con as a con el cos e de o os dis-
posi i os mas a anzados, que u ilizan compu ado es adicionales o ha dwa e
especí ico pa a ealiza el p ocesamien o necesa io, y que ienen un cos e ha-
bi ualmen e mas ele ado.
Figu a 1.1: Viso es Ca dboa d. Fuen e: .google.com.
1.2. Obje i os
Los p incipales obje i os de es e p oyec o son los siguien es:
In oduci Uni y como he amien a de desa ollo y sus pla a o mas so-
po adas, haciendo hincapié en el mé odo de abajo con es a he a-
mien a y en sus en ajas, des acando su po abilidad.
Mos a el desa ollo paso a paso de una aplicación 3D que pueda se i
como base pa a un ideojuego, cen ándose en la uncionalidad y consi-
de ando su endimien o en disposi i os mó iles. El obje i o es mos a
cómo se desa ollan los elemen os p incipales de un ideojuego con
Uni y, que consis i á en una escena en 3D en la que el jugado en-
d á que de o a a enemigos que eco en el escena io, e i ando sus
dispa os. La inalidad no se á ob ene un juego con un acabado que
pe mi a su dis ibución inmedia a en el me cado, sino cen a se en el
p opio desa ollo y en que pueda se adap ado pos e io men e a o as
5
CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS
pla a o mas, especialmen e disposi i os mó iles y iso es de ealidad
i ual, y expe imen a con sus posibilidades y mé odos de con ol. Es-
o ambién condiciona á el apa ado g á ico, que no emplea á modelos
y ex u as con un g an ni el de de alle, pa a e i a posibles p oblemas
de endimien o en disposi i os con meno capacidad de p ocesamien o
u o as limi aciones. O as posibles mejo as, como aumen a el núme-
o de ni eles de juego o modos mul ijugado en ed, queda án ue a
del ámbi o del p oyec o y se deja án como u u as ampliaciones que se
pod ían abo da .
Adap a la aplicación desa ollada a disposi i os mó iles que hagan uso
de ealidad i ual, especialmen e a a és de la pla a o ma Ca dboa d
( igu a 1.1). Se pa i á de una e sión de esc i o io que pueda se ejecu-
ada en o denado es pe sonales, y a pa i de ella se desa olla án o as
e siones pa a cub i múl iples pla a o mas. Conc e amen e, además de
la e sión de esc i o io, se implemen a á una e sión pa a disposi i os
mó iles que haga uso de un acele óme o, o a e sión adap ada a la
ealidad i ual pa a iso es de ca ón Ca dboa d con un sólo ga illo,
y o a pa a iso es de ealidad i ual que pueda maneja se con un
con olado independien e.
Mos a el p oceso de compilación y despliegue en a ias pla a o mas
dis in as, así como e alua la ejecución de la aplicación p obándola en
es as pla a o mas.
1.3. Al e na i as
Se han conside ado o os mo o es de desa ollo de ideojuegos como al-
e na i as a Uni y, si emba go es e úl imo iene algunas en ajas que lo hacen
el más indicado pa a el ámbi o de es e p oyec o.
Los mo o es conside ados son Un eal Engine 4, desa ollado po Epic Ga-
mes [2] ( igu a 1.2a) y C yEngine, desa ollado po C y ek [3] ( igu a 1.2b).
Ambos ienen a ios pun os en común, po ejemplo los dos son he amien as
especialmen e en ocadas al desa ollo de ideojuegos con g á icos en 3D, y
disponen de opciones más a anzadas en es e aspec o pa a consegui esul a-
dos más ealis as y un mejo endimien o en ha dwa e de úl ima gene ación.
Uni y, po o a pa e, es á cen ado en un mé odo de desa ollo más ágil,
basado en el uso del edi o y sc ip s en C# que pe mi en hace cambios y
p oba los ápidamen e, y po an o iene una cu a de ap endizaje menos
6
CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS
(a) (b)
Figu a 1.2: Logo ipo de Un eal Engine 4 (a) y de C yEngine (b).
p onunciada.
En cuan o a las pla a o mas sopo adas, ac ualmen e los es mo o es so-
po an an o ideoconsolas como PC, disposi i os mó iles y ealidad i ual,
aunque en sus p ime as e siones Un eal Engine y C yEngine es aban di i-
gidos p incipalmen e a PC y ideoconsolas.
El cos e de las licencias de uso ambién se ha enido en cuen a. C yEngine
es ac ualmen e una he amien a de código abie o y usa la es comple amen e
g a ui o. Uni y y Un eal Engine ambién son g a ui os pa a un uso pe sonal
o académico, pe o son de pago si se hace un uso p o esional o se pe ciben
ganancias po el so wa e desa ollado. En el p óximo capí ulo se discu i án
con más de alle las dis in as licencias y pla a o mas disponibles en Uni y.
1.4. Es uc u a de la memo ia
A con inuación se ha á un esumen de los capí ulos de los que cons a es a
memo ia de p oyec o, que cub i án los obje i os plan eados:
Desc ipción gene al de Uni y En es e capí ulo se p esen a el mo o de
ideojuegos Uni y3D, sus ca ac e ís icas p incipales y mé odo de desa-
ollo.
Compa a i a en e licencias y pla a o mas Se analizan las licencias de
desa ollo disponibles pa a abaja con Uni y y odas las pla a o mas
ac ualmen e sopo adas.
Desa ollo de una aplicación 3D con Uni y Aquí se abo da el desa o-
llo de la e sión de esc i o io de la aplicación, que se i á como base
7
CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS
pa a el es o de e siones. Se mues a el desa ollo paso a paso, de a-
llando las ope aciones en el edi o , manipulación de obje os y sc ip s
empleados. Al inal del capí ulo se ob iene una e sión con odos los
elemen os jugables que de inen el juego, y una in e az isual (HUD)
con indicado es que mues an in o mación ace ca de la pa ida. Se usan
o mas geomé icas básicas, sin ma e iales ni ex u as.
Mejo a del aspec o g á ico y e ec os de sonido Se añaden ex u as y
ma e iales a cie os elemen os del juego, además de modelos 3D im-
po ados de he amien as ex e nas (Blende ) y de la Asse S o e de
Uni y. También se inco po an sonidos, música, y un menú de pausa
que pe mi e ajus a algunas opciones.
E olución de la ealidad i ual y opciones disponibles En es e ca-
pí ulo se hace un epaso de la e olución de la ealidad i ual a lo
la go de la his o ia y se p esen an las pla a o mas disponibles en la
ac ualidad.
Adap ación de la aplicación a disposi i os de ealidad i ual En es-
e capí ulo se pa e de la aplicación o iginal pa a adap a la a disposi i-
os Ca dboa d de ealidad i ual. Se desa ollan dos nue as e siones:
una pa a iso es de ca ón con un sólo ga illo, y o a pensada pa a se
u ilizada con un con olado con a ios bo ones. Se explo an los cam-
bios necesa ios en la p opia aplicación pa a adap a se a nue os mé odos
de con ol en cada una de es as e siones, además de la u ilización del
SDK Google VR de Uni y pa a log a el e ec o de inme sión de ealidad
i ual.
Gene ación de ejecu ables pa a o as pla a o mas Se de alla el p o-
ceso de compilación y ejecución de la aplicación en a ias pla a o mas,
y se gene a o a e sión que u iliza como mé odo de con ol el acele ó-
me o de un disposi i o And oid o iOS.
Conclusiones y abajos u u os En el capí ulo inal se hace un epaso
gene al del abajo ealizado y de cómo se han cumplido los obje i os
plan eados, así como posibles ampliaciones que se pod ían abo da pa a
con inua con el p oyec o en el u u o.
8
Capí ulo 3
Compa a i a en e licencias y
pla a o mas sopo adas
A con inuación se compa a án las dis in as licencias de uso exis en es en
Uni y y se desc ibi án b e emen e odas las pla a o mas pa a las que se pue-
de desa olla con es a he amien a.
3.1. Licencias de uso
Uni y se puede u iliza en la ac ualidad con cua o licencias dis in as:
Pe sonal, Plus, P o y En e p ise.
Pe sonal Es a es la licencia más básica, e incluye odas las p es aciones del
mo o y sopo e pa a odas las pla a o mas. Usa es a licencia no iene
ningún cos e, po lo que es un buen pun o de pa ida pa a usua ios que
es én empezando o que no engan p e is o hace un uso p o esional de la
he amien a. Las p incipales di e encias espec o a licencias supe io es
son o os se icios o ecidos (como Uni y Anali ics) y un lími e a los
ing esos anuales de $100.000.
Plus La licencia Plus incluye odo lo o ecido en la licencia Pe sonal, ade-
más de la posibilidad de cambia o elimina la pan alla con el logo ipo
de Uni y que apa ece po de ec o al lanza la aplicación. También o e-
ce una e sión más comple a de Uni y Anali ics, capacidad pa a más
usua ios simul áneos alojados po Uni y en modos mul ijugado onli-
ne, o os se icios como in o mes de ejecución, y descuen os en algunos
paque es de asse s. El lími e de ing esos anuales aumen a a $200.000.
El cos e de es a licencia es de $35 po pues o/mes.
15

CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
P o Es a licencia es á di igida a un uso p o esional. Incluye odo lo o ecido
en la licencia Plus mejo ando aún más los se icios o ecidos. Elimina
el lími e a los ing esos anuales y pe mi e llega a un acue do con Uni y
Technologies pa a accede al código uen e del mo o y con a a so-
po e P emium, que es un se icio de aseso amien o. El cos e de es a
licencia es de $125 po pues o/mes.
En e p ise Es una licencia pa a o ganizaciones, que pe mi e ob ene se -
icios pe sonalizados. No se indica el cos e de es a licencia, ya que la
compañía ins a a pone se en con ac o con ella pa a llega a un acue do
espec o al cos e y los se icios con a ados.
La igu a 3.1 mues a un esumen de odo lo o ecido en cada licencia.
Figu a 3.1: Licencias disponibles en Uni y. Fuen e: s o e.uni y.com.
16
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
3.2. Pla a o mas
3.2.1. Windows, MacOS y GNU/Linux
Uni y pe mi e gene a ejecu ables pa a los es p incipales sis emas ope-
a i os p esen es en o denado es pe sonales. En el caso de Windows, el mo o
puede u iliza las APIs g á icas Di ec 3D, OpenGL y Vulkan a pa i de la
e sión 5.6 [7]. Pa a MacOS sólo puede u iliza se OpenGL, mien as que en
GNU/Linux se pueden usa an o OpenGL como Vulkan.
3.2.2. WebGL
WebGL es una API implemen ada en Ja asc ip que, median e el uso
de HTML 5, pe mi e la ejecución de aplicaciones 3D en un na egado web
( igu a 3.2). Uni y pe mi e gene a ejecu ables pa a es a pla a o ma, a a és
de compilado es que ans o man el código na i o en .NET, C# y Uni ySc ip
en iche os en C++, que inalmen e se ans o man en el código Ja asc ip
necesa io [8].
Figu a 3.2: Logo ipo de WebGL.
3.2.3. iOS
Pa a el desa ollo de juegos o aplicaciones en disposi i os mó iles, hay
que ene en cuen a que el ha dwa e es á más es anda izado que en el caso
de los o denado es pe sonales, además de que suele ene meno po encia
pa a p ocesa g á icos po que se usan chips in eg ados en luga de a je as
g á icas dedicadas. Po ello hay que abo da el desa ollo de aplicaciones pa-
a sis emas ope a i os como iOS o And oid de o ma algo di e en e. Es o
incluye, po ejemplo, accede a uncionalidades como la pan alla ác il o el
GPS, y ene p ecaución con el consumo de ene gía de i ado del uso de la
aplicación.
En el caso conc e o de Uni y pa a iOS hay o as di e encias. Si se u iliza
código en Ja asc ip , el ipado dinámico es a á desac i ado po de ec o [9], ya
que si sólo se u iliza ipado es á ico el endimien o mejo a conside ablemen e
17
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
en disposi i os con iOS. Es o puede causa e o es al impo a p oyec os con
código exis en e en Ja asc ip , y puede soluciona se indicando explíci amen e
el ipo de las a iables. Po o a pa e, al impo a iche os de audio, ídeo
o ex u as, se aplica una con e sión a ipos de a chi o sopo ados po la
pla a o ma, si es posible. Algunos o ma os, como ex u as en DXT, no son
sopo adas en iOS.
3.2.4. And oid
And oid ( igu a 3.3) es un sis ema ope a i o de código abie o basado en
el ke nel de Linux y desa ollado po Google. Es uno de los sis emas más
u ilizados en dispos i os mó iles, y Uni y pe mi e desa olla aplicaciones
na i as pa a él, además de aplicaciones que hagan uso de ealidad i ual
median e pla a o mas como Ca dboa d ( ambién sopo ada en iOS) o Day-
d eam. La API u ilizada es OpenGL.
Figu a 3.3: And oid 7.1 Nouga . Fuen e: wikipedia.o g.
Las conside aciones a ene en cuen a son simila es a las de desa olla
pa a iOS, si bien el ha dwa e es á menos es anda izado. Compila pa a An-
d oid ambién equie e ene ins alados el Ja a De elopmen Ki (JDK), el
p opio SDK de And oid y en caso de que se u ilice IL2CPP, el And oid Na i e
De elopmen Ki (NDK) [10].
3.2.5. Windows S o e Apps pa a Windows Phone y
HoloLens
Con Uni y ambién se pueden desa olla aplicaciones pa a la Windows
S o e ( igu a 3.4) y ejecu a las en Windows, en disposi i os mó iles con Win-
18
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
dows Phone o en iso es HoloLens. El p oceso de compilación y dis ibución
implica desa olla la aplicación en Uni y, y selecciona como pla a o ma de
des ino Windows S o e Apps. Es o gene a un p oyec o de Visual S udio, con
el que se puede compila y gene a el ejecu able inal.
Figu a 3.4: Windows S o e.
Los equisi os necesa ios pa a desa olla en es as pla a o mas dependen
del SDK de Windows con el que unciona á la aplicación:
Pa a el SDK Windows 8.1,Windows Phone 8.1 oUni e sal SDK 8.1, es
necesa io ealiza la compilación en Windows 8.1 o supe io y dispone de
Visual S udio 2013 o alguna e sión pos e io .
Pa a el SDK Uni e sal Windows 10 Apps, se equie e Windows 8.1 o
supe io , Visual S udio 2015 o pos e io y ene ins alado el p opio SDK
Uni e sal Windows 10 Apps.
Las aplicaciones pa a HoloLens son conside adas como Uni e sal Win-
dows Applica ions po Mic oso , de mane a que los p ocedimien os de desa-
ollo y equisi os son los mismos que los de cualquie aplicación de Windows
S o e.
19
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
3.2.6. Disposi i os de ealidad i ual
Uni y pe mi e desa olla aplicaciones pa a los siguien es disposi i os
de ealidad i ual: Oculus Ri , S eam VR, Google Ca dboa d, Dayd eam,
PlayS a ion VR, Gea VR y Mic oso Hololens ( igu a 3.5). Es as y o as
pla a o mas de ealidad i ual se a a án en de alle en su p opio capí ulo.
Figu a 3.5: Pla a o mas de ealidad i ual sopo adas po Uni y. Fuen e:
uni y3d.com.
3.2.7. Tizen
Tizen ( igu a 3.6) es un sis ema ope a i o lib e basado en el ke nel de
Linux, y cons uido inicialmen e a pa i de la pla a o ma Linux de Samsung
(SLP). Funciona en odo ipo de disposi i os, incluyendo PC, disposi i os
mó iles o Sma TVs.
Figu a 3.6: Tizen 2.2.
Uni y pe mi e gene a aplicaciones ejecu ables pa a Tizen en sma phones
Samsung. El único equisi o es ins ala el SDK pa a el desa ollo de aplica-
ciones en es a pla a o ma, y o o SDK pa a la ges ión de ce i icados (Tizen
20

CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
(a) (b)
Figu a 3.7: Videoconsolas PlayS a ion 4 (a) y Nin endo 3DS (b).
Ce i ica e Ex ension SDK), que son necesa ios pa a ins ala aplicaciones en
el sis ema.
3.2.8. Fi e OS
Fi e OS es un sis ema ope a i o pa a mó iles desa ollado po Amazon y
basado en And oid. Sus p incipales di e encias con And oid son una in e az
de usua io pe sonalizada y el uso de aplicaciones p opias de Amazon que
sus i uyen al so wa e de Google y que p omocionan el uso de sus p opios
se icios. Las aplicaciones ejecu adas son de ipo And oid Package (APK),
po an o dis ibui aplicaciones pa a es a pla a o ma a a és de Uni y sigue
el mismo p ocedimien o que hace lo pa a sis emas And oid.
3.2.9. Videoconsolas
Ac ualmen e se puede desa olla con Uni y pa a PlayS a ion 4 ( igu a
3.7a), Plays a ion Vi a, Xbox 360, Xbox One, Wii, WiiU, Nin endo 3DS ( i-
gu a 3.7b) y Nin endo Swi ch. Po lo gene al, desa olla aplicaciones pa a
es as pla a o mas equie e publica las pasando po un p oceso de ap obación
que a ía según el i ula de cada una. En el caso de WiiU, Uni y es la he-
amien a po de ec o que iene incluida con cada licencia de desa ollo pa a
es a consola [11].
21
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
3.2.10. And oid TV
And oid TV es un sis ema ope a i o basado en el ke nel de Linux, y
o ien ado a se u ilizado en ele iso es. Es e sis ema pe mi e u iliza juegos
y aplicaciones en ele iso es con una in e az simila a la de And oid en elé-
onos mó iles. El p ocedimien o pa a gene a ejecu ables en es a pla a o ma
es el mismo que pa a And oid, ya que se a a p ác icamen e del mismo sis-
ema ope a i o y las aplicaciones se ins alan a pa i de a chi os en o ma o
APK. En las opciones de compilación de Uni y hay que asegu a se que es én
ma cadas las opciones And oid TV Compa ibili y yAnd oid Game ( igu a
3.8), en caso de que se a e de un juego, pa a que se pueda u iliza el mando
del ele iso u o o disposi i o como con olado .
Figu a 3.8: Opciones de compilación pa a And oid TV.
3.2.11. OS
OS es un sis ema ope a i o desa ollado po Apple pensado pa a un-
ciona en cualquie ele iso de al a de inición a a és del ep oduc o Apple
TV ( igu a 3.9), que incluye un con olado . Es a basado en iOS, y pe mi e
e con enidos de se icios de s eaming de ídeo y ejecu a aplicaciones des-
ca gadas de la Apple S o e. Cualquie aplicación pa a iOS puede ejecu a se
en OS, si bien puede se necesa io hace algunos cambios en la aplicación,
como adap a la a una pan alla más g ande, pa a que la expe iencia sea óp-
ima. En el caso de ideojuegos, suele se necesa io adap a los con oles al
con olado de Apple TV.
Uni y pe mi e gene a ejecu ables pa a OS seleccionándola como pla a-
o ma a la ho a de compila . Sin emba go hay algunos equisi os: es necesa io
dispone del disposi i o Apple TV de 4agene ación, el cable de conexión y
el IDE XCode en su e sión 7.1 o supe io [12].
3.2.12. Samsung SMART TV
Uni y ambién o ece la posibildad de desa olla aplicaciones pa a e-
le iso es Samsung SMART TV. Es os ele iso es ienen como ha dwa e un
22
CAPÍTULO 3. COMPARATIVA ENTRE LICENCIAS Y
PLATAFORMAS SOPORTADAS
Figu a 3.9: Disposi i o Apple TV. Fuen e: apple.com.
p ocesado ARM y GPU con OpenGLES, po lo que p esen an un endi-
mien o simila al de los disposi i os mó iles. Pa a ealiza la compilación
desde Uni y es necesa io in oduci la di ección IP del ele iso , que puede
ob ene se ácilmen e a a és de la in e az de es e.
23
Capí ulo 4
Desa ollo de una aplicación 3D
con Uni y
A con inuación se mos a á paso a paso cómo desa olla una aplicación
que pueda se i como base pa a un ideojuego en 3D, con is as a que pueda
se adap ada más adelan e a un en o no de ealidad i ual. El obje i o es
cons ui una escena a pa i de o mas básicas, en la que el jugado se pueda
mo e lib emen e e in e ac ua con elemen os del escena io.
4.1. C eación de un nue o p oyec o
Pa a empeza hay que inicia Uni y y selecciona New ( igu a 4.1) pa a
in oduci el nomb e del p oyec o y la u a donde se gua da án los iche os
necesa ios. En es e caso ma ca emos la casilla 3D, ya que la aplicación a
a se de es e ipo. Es o in luye en la con igu ación inicial del p oyec o, que
queda á p epa ada pa a abaja en un en o no idimensional.
T as pulsa C ea e P ojec , apa ece á la pan alla p incipal de Uni y con
una escena acía, a excepción de la cáma a p incipal y una uen e de luz
di eccional ( igu a 4.2). Si seleccionamos la cáma a que se ha c eado po
de ec o, podemos e i ica en el inspec o que iene el a ibu o P ojec ion
es ablecido en modo pe spec i a. Es e es el modo que debe usa se en escenas
en 3D, ya que pe mi e ap ecia la p o undidad de los obje os (obje os más
lejanos espec o a la cáma a se e án más pequeños, mien as que los más
ce canos se e án más g andes). El o o modo que hay disponible, que es a-
blece una cáma a o og á ica, elimina la sensación de p o undidad y se usa
habi ualmen e pa a aplicaciones en 2D.
24
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
4.5. Inco po ando al jugado
El siguien e paso es añadi un jugado que puede mo e se lib emen e po
el escena io que hemos c eado. El jugado end á una is a en p ime a pe -
sona de odo lo que le odea, pe o no pod á e se a sí mismo, po an o de
momen o pod emos ep esen a lo con un obje o 3D simple. La somb a del
jugado si se á isible según su posición, así que op a emos po un obje o
con o ma de cápsula (GameObjec →3DObjec →Capsule).
T as añadi el obje o, podemos a as a en la je a quía la cáma a de
la escena den o del obje o Capsule, que enomb a emos como Jugado . De
es a o ma es como si ié amos a a és de sus ojos. Es impo an e e i ica
que la posición de la cáma a (en el ec o Posi ion del componen e T ans-
o m) es é a 0, ya que aho a es una posición ela i a al jugado . A pesa
de ello puede se con enien e aumen a la al u a de la cáma a un poco pa-
a que ealmen e pa ezca que es á si uada a la al u a de sus ojos ( igu a 4.10).
Figu a 4.10: Posición de la cáma a den o del jugado .
Si se obse a el obje o Jugado en el inspec o , se puede obse a que
iene asociado un componen e CapsuleCollide , que Uni y inco po a au o-
má icamen e. Como su nomb e indica, es e componen e si e pa a de ec a
las colisiones de es e obje o con o os, pe o en es e caso nos in e esa sus i-
ui lo po o o componen e de ipo Cha ac e Con olle . Es o acili a á más
adelan e el a amien o de los con oles y la p og amación del compo amien-
o de es e obje o como un pe sonaje. Pa a hace lo, seleccionamos el icono de
la ueda den o del componen e Capsule Collide y seleccionamos Remo e
31

CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
Componen . Si pulsamos el bo ón Add Componen , apa ecen ca ego ías donde
se ag upan odo ipo de componen es que podemos añadi al obje o ac ual,
en es e caso seleccionamos el componen e Physics →Cha ac e Con olle .
Figu a 4.11: Jugado con componen e Capsule Collide .
4.5.1. Mi ando al ededo
Pa a que el jugado pueda mi a a su al ededo usando el a ón, end e-
mos que usa un sc ip que p ocese la en ada y aplique cambios a los obje os
de la escena. Es o es una ope ación muy común en la me odología de abajo
de Uni y, se pod ía deci que, de o ma gene al, la o ma de abaja consis e
en añadi obje os a la escena y asocia sc ip s a es os obje os pa a asocia les
un compo amien o de e minado.
Pa a la p og amación de es e juego u iliza emos sc ip s en C#, así que
c ea emos uno nue o di ec o io que llama emos sc ip s y que apa ece á en la
sección de Asse s. Pa a ello se puede selecciona en el menú Asse s →C ea e
→Folde , o accediendo al mismo menú si se pulsa el bo ón de echo del a-
ón en la sección Asse s. A con inuación nos si uamos den o del di ec o io
sc ip s, y desde el mismo menú (en Asse s →C ea e →C# Sc ip ) podemos
c ea un nue o sc ip , al que llama emos Mi a Al ededo .cs.
Si seleccionamos el sc ip ecién c eado, se ab i á el edi o que es é con i-
gu ado po de ec o. La ins alación de Uni y 5.5 incluye dos IDEs p eins ala-
dos, Visual S udio 2015 y MonoDe elop ( igu a 4.12). Pa a la ealización de
32
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
es e p oyec o se u iliza á el segundo, aunque la elección no impo a demasia-
do, ya que el IDE se u iliza á simplemen e pa a edi a el código de los sc ip s.
Figu a 4.12: Edición de un nue o sc ip en MonoDe elop.
Tal y como mues a la igu a 4.13, en Edi →P e e ences →Ex e nal
Tools se puede selecciona el IDE que Uni y ab i á po de ec o al edi a un
sc ip .
Figu a 4.13: Selección de IDE po de ec o.
Lo p ime o que se puede e al ab i el sc ip Mi andoAl ededo .cs ( igu a
4.12) es que ya se ha c eado au omá icamen e una clase del mismo nomb e
que el iche o, que he eda de la clase MonoBeha iou [17]. Todos los sc ip s
de Uni y deben he eda de es a clase. Además, se han c eado dos mé odos,
33
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
S a () yUpda e(), que es án acíos. El mé odo S a () se llama á una úni-
ca ez, en el momen o en el que el sc ip es é ac i o. Típicamen e aquí se
inicializan las a iables y cualquie cosa que aya a se necesa ia du an e la
ejecución del sc ip .
Como en cualquie ideojuego, es a aplicación consis i á en un bucle in-
ini o en el que en cada i e ación se p ocesa á la en ada del jugado , se
ac ualiza á el es ado de la escena y és a se ol e á a dibuja en pan alla. El
mé odo Upda e() es un mé odo que se llama en cada una de es as i e aciones,
po an o es el p incipal mé odo que u iliza emos pa a ac ualiza el es ado
del juego.
Pa a implemen a el mo imien o de cabeza del jugado con el a ón, a-
a emos po sepa ado el mo imien o ho izon al y el e ical. El siguien e
código mues a la componen e ho izon al:
Mi a Al ededo .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Mi a Al ededo : MonoBeha iou {
public enum EjesRo acion {
Ho izon al = 0,
Ve ical = 1,
Ambos = 2
}
public EjesRo acion ejes = EjesRo acion.Ambos;
public loa elocidadRo acion = 12.0 ;
oid S a () {
}
oid Upda e () {
// Mo imien o ho izon al
i (ejes == EjesRo acion.Ho izon al) {
ans o m.Ro a e(0,
Inpu .Ge Axis("Mouse X") * elocidadRo acion, 0);
}
34
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
else i (ejes == EjesRo acion.Ve ical) {
// Mo imien o e ical
}
else {
// Mo imien o en ambos ejes
}
}
}
Es e sc ip ya es su icien e pa a pode p oba la o ación ho izon al. Pues-
o que a a a ec a al jugado , a as amos el sc ip desde el di ec o io co-
espondien e has a el obje o del jugado en la is a de je a quía. En ez de
a as a el sc ip ambién es posible incula lo al obje o Jugado seleccio-
nándolo y añadiendo el sc ip con el bo ón Add Componen →Sc ip s.
Se decla a una a iable de ipo enume ación pa a pode selecciona el eje
de o ación (ho izon al, e ical o ambos, es e úl imo se á el uncionamien o
no mal). De inimos ambién la elocidad de o ación. Decla a es as dos a-
iables como públicas pe mi e ajus a su alo desde el inspec o de Uni y,
incluso en iempo de ejecución. Es o esul a ú il pa a hace p uebas, y en es e
caso selecciona el eje nos pe mi i á p oba el uncionamien o de la o ación
ho izon al di ec amen e.
En el mé odo Upda e() especi icamos el p ocesamien o a ealiza en cada
ame: pa a el ipo de o ación ho izon al bas a con usa el mé odo Ro a e()
pa a o a el obje o sob e el que es á ac uando el sc ip (en es e caso, el
jugado ). El mé odo Ro a e() ecibe como pa áme o un ec o de 3 coo de-
nadas (de ipo Vec o 3).Pa a o a ho izon almen e sólo ac uamos sob e el
eje Y, dejando a 0 las o as dos componen es. La de ección del mo imien o
del a ón se consigue con el mé odo Inpu .Ge Axis(), que ecibe una cadena
indicando el eje de mo imien o del a ón, que se á el eje ho izon al. Es e
alo se mul iplica po la elocidad que hayamos de inido.
T as gua da el sc ip , ya podemos pulsa el bo ón Play pa a ejecu a la
aplicación, y podemos comp oba que al mo e el a ón ho izon almen e am-
bién lo hace la isión del jugado . Es impo an e comp oba en el inspec o
de la cáma a que es é seleccionado el modo de o ación ho izon al, y pode-
mos hace cambios en la elocidad de o ación pa a ob ene la más adecuada.
A con inuación implemen a emos el mo imien o e ical y ambién la
combinación de ambos ejes, pa a que el jugado pueda mi a al ededo lib e-
men e. El siguien e código mues a el sc ip comple o:
35
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
Mi a Al ededo .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Mi a Al ededo : MonoBeha iou {
public enum EjesRo acion {
Ho izon al = 0,
Ve ical = 1,
Ambos = 2
}
public EjesRo acion ejes = EjesRo acion.Ambos;
public loa elocidadRo acionH = 12.0 ;
public loa elocidadRo acionV = 12.0 ;
public loa minAngleVe = -45.0 ;
public loa maxAngleVe = 45.0 ;
// o ación e ical (eje X)
p i a e loa _ o acionX = 0;
oid S a () {
// Desac i a de ección de isicas pa a la o ación
Rigidbody body = Ge Componen <Rigidbody>();
i (body != null) {
body. eezeRo a ion = ue;
}
}
oid Upda e () {
// Mo imien o ho izon al
i (ejes == EjesRo acion.Ho izon al) {
// Aplica o ación di ec amen e
ans o m.Ro a e(0,
Inpu .Ge Axis("Mouse X") * elocidadRo acionH, 0);
}
// Mo imien o e ical
else i (ejes == EjesRo acion.Ve ical) {
// Calcula ángulo o ación e ical en ame ac ual
_ o acionX -= Inpu .Ge Axis("Mouse Y") * elocidadRo acionV;
36

CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
_ o acionX = Ma h .Clamp(_ o acionX, minAngleVe , maxAngleVe );
// La o ación ho izon al no se inc emen a
loa o acionY = ans o m.localEule Angles.y;
ans o m.localEule Angles = new Vec o 3(_ o acionX, o acionY, 0);
}
// Mo imien o en ambos ejes
else {
// Calcula ángulo o ación e ical en ame ac ual
_ o acionX -= Inpu .Ge Axis("Mouse Y") * elocidadRo acionV;
_ o acionX = Ma h .Clamp(_ o acionX, minAngleVe , maxAngleVe );
// Va iación o ación ho izon al
loa del a = Inpu .Ge Axis("Mouse X") * elocidadRo acionH;
loa o acionY = ans o m.localEule Angles.y + del a;
ans o m.localEule Angles = new Vec o 3(_ o acionX, o acionY, 0);
}
}
}
La implemen ación del mo imien o e ical es algo dis in a a la del ho i-
zon al, como se puede ap ecia en el código. Es o es debido a que en el p ime
caso se aplicaba di ec amen e la o ación a pa i del a ón, pe o aho a es
necesa io limi a el ángulo de gi o pa a e i a que el jugado pueda da una
uel a comple a de a iba a abajo. Po an o en p ime luga calculamos la
a iación del ángulo de o ación e ical ( espec o al eje X en el sis ema de
coo denadas de Uni y) con Inpu .Ge Axis("Mouse Y"), que co esponde al
mo imien o ho izon al del a ón. En cada i e ación dec emen amos es a can-
idad al alo de la i e ación an e io . Despúes de calcula el ángulo a aplica ,
se u iliza el mé odo Clamp() pa a que es e alo no supe e el lími e de 45oo
-45o.
Pa a aplica la o ación que hemos calculado, la exp esamos como un
Vec o 3 y la asignamos di ec amen e a la p opiedad localEule Angles del
componen e T ans o m. El mé odo Ro a e() u ilizado an e io men e ealiza-
ba implíci amen e es e p oceso.
Si el mo imien o seleccionado iene que ene en cuen a ambos ejes, la
única di e encia espec o al mo imien o e ical es que al calcula el nue o
Vec o 3, inc emen amos la componen e co espondien e a la o ación ho i-
37
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
zon al en un alo del a, que es el alo que ob enemos di ec amen e del
mo imien o ho izon al del a ón.
Po úl imo, en el mé odo S a () se habili a el a ibu o eezeRo a ion del
componen e RigidBody del jugado , si es á p esen e. Es o es po cues iones
de endimien o, ya que al ac i a lo no se ienen en cuen a las ísicas de los
obje os en la o ación del jugado . Pa a es a aplicación nos in e esa que sólo
se conside e la en ada median e a ón.
4.5.2. Mo imien o del jugado po el escena io
Aho a que el jugado puede mi a al ededo , implemen a emos el des-
plazamien o del p opio jugado po el escena io. Es a ez el disposi i o de
en ada se á el eclado, aunque el código es muy simila al u ilizado pa a
de ec a el mo imien o del a ón. Pa a ello c eamos un nue o sc ip al que
llama emos Mo imien oJugado .cs y lo asocia amos al el obje o Jugado . El
sc ip con iene el siguien e código:
Mo imien oJugado .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Mo imien oJugado : MonoBeha iou {
public loa el = 8.0 ;
p i a e Cha ac e Con olle _cha ac e Con olle ;
public loa g a edad = -9.8 ;
oid S a () {
_cha ac e Con olle = Ge Componen <Cha ac e Con olle >();
}
oid Upda e () {
// en ada po eclado
loa mo X = Inpu .Ge Axis("Ho izon al") * el;
loa mo Z = Inpu .Ge Axis("Ve ical") * el;
Vec o 3 ec o Mo = new Vec o 3(mo X, 0, mo Z);
// no se puede supe a el. maxima en mo . diagonal
ec o Mo = Vec o 3.ClampMagni ude( ec o Mo , el);
38
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
ec o Mo .y = g a edad;
ec o Mo = ec o Mo * Time.del aTime;
// con e sion a sis . global de coo denadas
ec o Mo = ans o m.T ans o mDi ec ion( ec o Mo );
_cha ac e Con olle .Mo e( ec o Mo );
}
}
En el mé odo Upda e() de ec amos la pulsación de las eclas con In-
pu .Ge Axis() de o ma simila a como se hizo con el a ón. Como hicimos
en onces, usamos un iden i icado que ep esen a las eclas necesa ias, en es-
e caso "Ho izon al"de ec a á las eclas A, D, ←y→y "Ve ical"las eclas
W, S, ↑y↓. Es á asociación es á es ablecida así po de ec o, ya que son las
eclas más u ilizadas en juegos en p ime a pe sona. De odas o mas es posi-
ble cambia las con el Inpu Manage , accesible en Edi →P ojec Se ings →
Inpu . Desde es e menú es posible cambia la con igu ación de los con oles
al de alle ( igu a 4.14).
Figu a 4.14: Con oles.
Una ez ob enidas las componen es e ical y
ho izon al del mo imien o, se mu iplican po una
a iable pa a con ola la elocidad del mo imien o
y se asignan a las componen es X y Z de un nue o
Vec o 3. Después se usa el mé odo ClampMagni ude
pa a no maliza la elocidad a la que hemos es able-
cido, ya que si no se hicie a, la elocidad al despla-
za se en diagonal se ía algo supe io a la expe imen-
ada al desplaza se sólo e ical u ho izon almen e.
También hay decla ada una a iable g a edad que
asignamos a la componen e Y del ec o , y que si e pa a e i a que el juga-
do pueda lo a po el escena io.
A con inuación hay algunos concep os que ambién es impo an e comen-
a . En p ime luga hay que ene en cuen a que has a el momen o se ha
conseguido implemen a el mo imien o de los obje os cambiando su posición
algunas unidades de dis ancia en cada i e ación. Sin emba go, el núme o de
i e aciones que se ejecu a cada segundo es dis in a en cada máquina, depen-
diendo de su capacidad de p ocesamien o. Po an o la elocidad de mo i-
mien o de los obje os se ía dis in a y depende ía de la máquina que es u ie a
ejecu ando la aplicación. Pa a e i a es o, una posible solución es a ia la
dis ancia que ienen que desplaza se los obje os en cada i e ación pa a que
la elocidad a la que se desplacen sea la misma e independien e de la máqui-
na. Uni y p opo ciona el alo del aTime, disponible en la clase Time, que
39
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
almacena el iempo empleado en p ocesa la úl ima i e ación en segundos. Si
mul iplicamos es e alo po la dis ancia a eco e en el mé odo Upda e(),
conseguimos una elocidad de mo imien o independien e de la máquina. Po
es e mo i o mul iplicamos el ec o de mo imien o po Time.del aTime.
Po o a pa e, en el en o no de Uni y hay dos sis emas de coo denadas
dis in os: el global y el local de cada obje o pa icula . Pa a desplaza al
jugado , u iliza emos el mé odo Mo e() del componen e Cha ac e Con ole
que le asignamos an e io men e. Es e mé odo aplica un mo imien o al obje o
y ecibe como pa áme o un ec o en el sis ema de coo denadas global, así
que es necesa io con e i el ec o del sis ema local al global median e el
mé odo T ans o mDi ec ion(). Pa a pode accede al componen e Cha ac-
e Con olle , se usa una a iable que se inicializa en S a () con el mé odo
Ge Componen (). Es e es un mé odo que se u iliza muy a menudo pa a ob-
ene cualquie componen e del obje o (GameObjec ) al cual es á inculado
un sc ip .
Con el sc ip implemen ado el jugado ya puede mo e se po el escena io,
aunque hay un de alle que queda po ajus a . La g a edad se aplica sob e
la componen e Y del mo imien o aplicado al jugado , pe o si es e se inclina
hacia a iba o abajo cuando mi a en es as di ecciones, es e ec o cambia su
di ección y la g a edad le impulsa ho izon almen e en ez de hacia abajo.
Una posible solución pod ía se asocia el sc ip Mi a Al ededo .cs a la
cáma a en ez de al jugado , aunque en onces el desplazamien o del jugado
no end ía en cuen a hacia dónde es á mi ando. En ez de eso, asigna emos
es e sc ip an o a la cáma a como al jugado , pe o es ablece emos en el
inspec o que el jugado sólo o e ho izon almen e, y la cáma a sólo e i-
calmen e. De es a o ma ambos obje os esponde án a la en ada desde el
a ón po sepa ado: si el a ón se desplaza en ho izon al, el jugado o a á
ho izon almen e, y si se desplaza en e ical, la cáma a o a á en e ical,
e i ando que lo haga el jugado y cambie la di ección de la g a edad.
Con es os elemen os ya enemos un p o o ipo de ideojuego que nos pe -
mi e eco e en p ime a pe sona el escena io que hemos diseñado. El siguien-
e paso se á añadi o os elemen os (como enemigos) con los que se pueda
in e ac ua de a ias mane as.
40
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
el obje o Enemigo que enemos en la escena, se puede obse a que en el
sc ip asociado hay una nue a casilla a la que debemos a as a el p e ab
del p oyec il. Po o a pa e, ambién es impo an e que el enemigo y el
jugado es én ap oximadamen e a la misma al u a, ya que en caso con a io
el p ime o no de ec a ía al segundo, aunque lo u ie a delan e. Es o se puede
ajus a a iando la al u a de los obje os, o al e na i amen e u ilizando el
mé odo Sphe eCas () pa a de ec a un á ea más amplia en e al jugado . En
la igu a 4.18 se puede e como los dos obje os es án a una al u a simila , y
cómo hemos asignado el p e ab del p oyec il al sc ip IAEnemigo.
Figu a 4.18: Enemigo dispa ando al jugado .
Si ejecu amos la aplicación, al si ua nos en en e del enemigo apa ece á el
p oyec il, aunque es a á de enido. Tend emos que asocia al p e ab su p opio
sc ip pa a pone lo en mo imien o y de ec a su colisión con el jugado . El
código de es e nue o sc ip , Con olP oyec il.cs, es el siguien e:
Con olP oyec il.cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Con olP oyec il : MonoBeha iou {
public loa el = 5.0 ;
public in ue za = 1;
47

CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
oid Upda e () {
ans o m.T ansla e(0, 0, el * Time.del aTime);
}
oid OnT igge En e (Collide o he ) {
Con olJugado jug = o he .Ge Componen <Con olJugado >();
i (jug != null) {
jug.Recibi Dispa o( ue za);
}
Des oy( his.gameObjec );
}
}
En Upda e() se ac ualiza la posición del p oyec il pa a que se mue a ha-
cia adelan e. Po o a pa e enemos OnT igge En e (), que es un mé odo
p ede inido en Uni y donde especi icamos el código que se ejecu a á cuando
el p oyec il colisione con o o obje o (conc e amen e se de ec a la colisión
con el Collide de o o obje o, que es lo que ecibe po pa áme o). A pa -
i del Collide comp obamos si el obje o impac ado es el jugado . Es o se
puede a e igua comp obando si el obje o iene asignado el sc ip Con olJu-
gado .cs, que c ea emos a con inuación. Si el jugado es alcanzado, llamamos
a un mé odo que añadi emos a Con olJugado y que mos a á po la conso-
la de Uni y un mensaje. En cualquie caso, cuando el p oyec il colisione con
o o obje o lo eliminamos de la escena con el mé odo Des oy().
La a iable angoMinDispa o que añadimos en IAEnemigo.cs, y que es-
ablecía una dis ancia mínima en e el enemigo y el jugado pa a pode dis-
pa a , e i a un p oblema que se puede p oduci si el jugado se si úa muy
ce ca del enemigo y jus o en en e: en ese caso el p oyec il eco e una dis-
ancia muy co a an es de des ui se, po an o el enemigo pod ía dispa a
epe idamen e en un in e alo muy co o de iempo. Es o ambién se pod ía
soluciona in oduciendo un pequeño e a do en e cada dispa o.
Después de asigna el sc ip al p e ab del p oyec il, es necesa io ma ca
la casilla Is T igge en el componen e Sphe eCollide del p e ab y añadi un
componen e RigidBody (Add Componen →Physics →RigidBody) pa a que
puedan de ec a se las colisiones. También desma camos la casilla Use G a i y
en es e componen e pa a que al p oyec il no le a ec e la g a edad.
Pa a pode ejecu a la aplicación oda ía hace al a un paso más: c ea el
sc ip Con olJugado .cs al que se hace e e encia en el sc ip del p oyec il:
48
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
Con olJugado .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Con olJugado : MonoBeha iou {
p i a e in _ idas;
oid S a () {
_ idas = 10;
}
public oid Recibi Dispa o(in ue za) {
_ idas -= ue za;
Debug.Log("Vidas: " + _ idas);
}
}
En es e sc ip simplemen e decla amos el núme o de idas que iene el
jugado y un mé odo que las dec emen a al ecibi un dispa o y las mues a
po la consola. T as asigna el sc ip al jugado , inalmen e se puede p oba
el juego y comp oba que el p oyec il se mue e y se de ec an las colisiones
co ec amen e.
4.6.3. Golpeando enemigos
En es e apa ado implemen a emos el a aque del jugado a los enemi-
gos, que se ealiza á a co a dis ancia golpeándoles con un bas ón. Po el
momen o lo ep esen a emos añadiendo un cilind o en la escena median e
GameObjec →3D Objec →Cylinde y cambiando su amaño y posición
pa a que enga o ma ala gada y quede si uado jus o en en e de la cáma a
( igu a 4.19). También ha emos que el bas ón sea un hijo del jugado en la
je a quía de obje os, al igual que se hizo con la p opia cáma a. De es á o ma,
sus coo denadas se án ela i as al jugado y el bas ón lo segui á cuando se
mue a po la escena. Pa a e i a posibles p oblemas con las colisiones de los
p oyec iles enemigos, eliminamos el componen e CapsuleCollide .
A con inuación que emos que el jugado pueda golpea a los enemigos
cuando es é ce ca de ellos. También se end á que comp oba que es é mi-
ando a su obje i o, ya que no se ía muy ealis a si se de ec a a el golpe
49
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
Figu a 4.19: Bas ón del jugado .
cuando el jugado es u ie a de espaldas, po ejemplo. Pa a ello modi ica e-
mos el sc ip Con olJugado .cs añadiendo un mé odo Upda e(), y a iables
pa a lle a la cuen a de los pun os conseguidos y los pun os máximos (nece-
sa ios pa a gana una pa ida):
Con olJugado .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Con olJugado : MonoBeha iou {
p i a e in _ idas;
p i a e in _pun os;
p i a e in _ angoA aque;
p i a e in _maxPun os;
p i a e Came a _cama a;
oid S a () {
_ idas = 3;
_pun os = 0;
_maxPun os = 15;
_ angoA aque = 1;
50
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
_cama a = Ge Componen InChild en<Came a>();
}
oid Upda e() {
// bo on izq a on pulsado
i (Inpu .Ge MouseBu onDown(0)) {
// se emi e aycas hacia el cen o de la cáma a
Vec o 3 cen oCama a = new Vec o 3(_cama a.pixelWid h / 2,
_cama a.pixelHeigh / 2,
0);
Ray ay = _cama a.Sc eenPoin ToRay(cen oCama a);
Raycas Hi hi ;
i (Physics.Raycas ( ay, ou hi )) {
GameObjec obje oAlcanzado = hi . ans o m.gameObjec ;
IAEnemigo sc ip Enem =
obje oAlcanzado.Ge Componen <IAEnemigo>();
// si es un enemigo, es á den o del ango y es á i o
// ecibe golpe
i (sc ip Enem != null && hi .dis ance < _ angoA aque
&& sc ip Enem. idas > 0) {
sc ip Enem.Recibi Golpe();
_pun os++;
Debug.Log("Pun os: " + _pun os);
}
}
}
}
public oid Recibi Dispa o(in ue za) {
_ idas -= ue za;
Debug.Log("Vidas: " + _ idas);
}
}
En el sc ip se uel e a hace uso de aycas s pa a la de ección del gol-
pe. En el mé odo S a () inicializamos el ango en el que que emos de ec a
al enemigo y ob enemos la cáma a p incipal, ya que end emos que hace
51
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
e e encia a ella en Upda e(). Pues o que an e io men e hicimos que el ob-
je o de la cáma a ue a hijo del jugado , u ilizamos Ge Componen InChil-
d en<Came a>().
En el p opio mé odo Upda e(), de ec amos si se ha pulsado el bo ón iz-
quie do del a ón median e Inpu .Ge MouseBu onDown(0). En caso a i -
ma i o, se p oyec a un aycas desde la posición de la cáma a, que se di ige
hacia el cen o de la pan alla, con el mé odo Sc eenPoin ToRay(). El código
que ob iene la in o mación del obje o alcanzado es simila al explicado an-
e io men e, con una di e encia impo an e: en es e caso se u iliza el sc ip
IAEnemigo.cs pa a sabe si el obje o es en e ec o un enemigo, y además se
u iliza es e sc ip pa a llama al mé odo Recibi Golpe() en caso de que es é
den o del ango de a aque. Es e mé odo enemos que añadi lo a IAEnemi-
go.cs:
IAEnemigo.cs
public in idas;
oid S a () {
idas = 1;
}
oid Upda e() {
[...]
}
public oid Recibi Golpe() {
idas--;
i ( idas < 1) {
S a Co ou ine(Desapa ece ());
}
}
p i a e IEnume a o Desapa ece () {
el = 0;
ans o m.T ansla e(0, -1, 0);
yield e u n new Wai Fo Seconds(0.5 );
ans o m.T ansla e(0, -1, 0);
yield e u n new Wai Fo Seconds(0.5 );
ans o m.T ansla e(0, -1, 0);
yield e u n new Wai Fo Seconds(0.5 );
Des oy( his.gameObjec );
52

CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
}
Como se puede e , se añade una a iable idas pa a con ola el núme o
de golpes que ienen que ecibi los enemigos pa a desapa ece . En cuan o al
mé odo Recibi Golpe(), es e dec emen a el núme o de idas del enemigo y si
se ago an llama a una co- u ina.
Una co- u ina (Co ou ine) es básicamen e un mé odo especial que puede
pausa se sin de ene el es o de la aplicación, lo cual nos puede esul a ú il
pa a que los enemigos mues en una pequeña animación al desapa ece . Con
S a Co ou ine() se inicia la co- u ina Desapa ece (), que mue e al enemi-
go hacia abajo y se pausa du an e unos ins an es epe idamen e, has a que
queda comple amen e po debajo del suelo. Cuando es o ocu e, des uimos
el obje o Enemigo con Des oy(). Es a es una posibilidad a la ho a de im-
plemen a pequeñas animaciones. Uni y dispone de o os sis emas pa a usa
animaciones más elabo adas, que se pueden conside a a la ho a de puli el
aspec o y la calidad g á ica en gene al.
Con odos es os cambios el jugado ya puede golpea a los enemigos,
aunque el bas ón segui á sin mo e se. Con un sc ip , Mo imien oBas on.cs,
podemos cambia la posición del bas ón cada ez que el jugado pulse o suel e
el bo ón izquie do del a ón:
Mo imien oBas on.cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Mo imien oBas on : MonoBeha iou {
oid Upda e () {
i (Inpu .Ge MouseBu onDown(0)) {
// Posicion po de ec o
ans o m.localRo a ion = Qua e nion.Eule (35, 90, 35);
}
i (Inpu .Ge MouseBu onUp(0)) {
// Golpe
ans o m.localRo a ion = Qua e nion.Eule (35, 90, 15);
53
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
}
}
}
Pa a que el mo imien o aplicado sea el espe ado, independien emen e
de la o ien ación del bas ón en la escena, se modi ica la o ación local del
obje o asignándola di ec amen e a ans o m.localRo a ion. Pues o que la
asignación es di ec a, debemos usa Qua e nion.Eule () pa a que se haga la
con e sión al sis ema que usa Uni y pa a aplica las o aciones.
4.6.4. Regene ación de enemigos
Pa a p oba los cambios hechos has a el momen o hemos enido a un
único enemigo en la escena, en es e apa ado añadi emos a ios pa a que el
jugado enga que busca los po el escena io. Aunque se añadie an muchos,
odo enemigo de o ado no uel e a apa ece , y puede llega un momen o en
el que ya no queden más enemigos. En ez de eso, p e endemos que haya en
odo momen o un núme o p ede e minado de enemigos, y que el juego e -
mine cuando se haya de o ado a cie o núme o de ellos o el jugado pie da
odas sus idas.
Pa a log a es e compo amien o, es necesa io lle a la cuen a de los
enemigos que es án p esen es, y egene a a uno cada ez que sea elimi-
nado. Po an o c ea emos un obje o acío, al que llama emos Regene ado ,
que se enca ga á de es a a ea. El obje o es a á acío po que se a a de
un con olado abs ac o, que no se á isible en ningún momen o, pe o que
implemen a á pa e de la lógica del juego. Median e GameObjec →C ea e
Emp y c eamos el obje o acío, y lo colocamos en cualquie pa e de la escena
(su posición no impo a, po simplicidad se puede coloca en el o igen) y le
asignamos un nue o sc ip , Regene a Enemigo.cs:
Regene a Enemigo.cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Regene a Enemigo : MonoBeha iou {
[Se ializeField] p i a e GameObjec p e ab;
p i a e GameObjec _enemigo;
54
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
public oid Regene a() {
_enemigo = Ins an ia e(p e ab) as GameObjec ;
in pos = Random.Range(0, 3);
swi ch (pos) {
case 0:
_enemigo. ans o m.posi ion = new Vec o 3(0 , 0.8 , -30 );
b eak;
case 1:
_enemigo. ans o m.posi ion = new Vec o 3(30 , 0.8 , -20 );
b eak;
case 2:
_enemigo. ans o m.posi ion = new Vec o 3(20 , 0.8 , 0 );
b eak;
de aul :
_enemigo. ans o m.posi ion = new Vec o 3(-15 , 0.8 , -30 );
b eak;
}
loa angulo = Random.Range(0, 360);
_enemigo. ans o m.Ro a e(0, angulo, 0);
}
}
Es e sc ip es simila al que se u ilizó pa a ins ancia los p oyec iles que
dispa an los enemigos. Pa a que uncione co ec amen e, de la misma o ma
que se hizo con el p oyec il, hay que c ea un p e ab pa a los enemigos (a
pa i de cualquie GameObjec Enemigo) y a as a lo a la casilla de es e
nue o sc ip . El código de ine cua o posiciones p ede inidas epa idas po el
escena io. Cuando se llama a la unción Regene a(), se elige alea o iamen e
una de es as posiciones y se ins ancia un nue o enemigo en ella, con una
o ación ambién alea o ia. De es a o ma el jugado no pod á p edeci dón-
de encon a á a los enemigos según se ayan egene ando. Sólo hace al a
añadi la llamada a es a unción desde el sc ip IAEnemigo.cs, en el mé odo
Recibi Golpe():
IAEnemigo.cs
public oid Recibi Golpe() {
55
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
idas--;
i ( idas < 1) {
S a Co ou ine(Desapa ece ());
//se llama al sc ip que egene a un enemigo nue o
GameObjec egene ado = GameObjec .Find("Regene ado ");
Regene a Enemigo sc ip Reg =
egene ado .Ge Componen <Regene a Enemigo>();
sc ip Reg.Regene a();
}
}
Ap o echando que enemos c eado el p e ab pa a los enemigos, añadi e-
mos algunos más pa a que el jugado pueda encon a se a a ios desde el
inicio del juego. Con es os cambios, podemos ejecu a lo y comp oba que al
de o a a un enemigo apa ece uno nue o en o o luga alea o io. El núme o
de enemigos se man end á cons an e.
4.7. In e az de usua io (HUD)
Pa a e mina con la uncionalidad del juego, esul a con enien e ene
indicado es en pan alla pa a mos a las idas del jugado y los pun os con-
seguidos. En Uni y exis en p incipalmen e dos o mas de implemen a una
in e az isual (o HUD): usando el sis ema adicional, disponible desde la
p ime a e sión del mo o , o el nue o sis ema.
El p ime o, ambién conocido como modo inmedia o, de ine odos los ele-
men os únicamen e median e código, aunque en cuan o a uncionalidad es á
algo limi ado en compa ación con el modo a anzado, que el más ecien e. En
es e caso usa emos es e úl imo, ya que a pesa de que el HUD que amos a
implemen a es bas an e minimalis a, o ece cie as en ajas. El nue o sis e-
ma pe mi e de ini y manipula los elemen os de la in e az desde el p opio
edi o , además de que esul a más lexible a la ho a de inclui elemen os más
complejos que sólo ex o, como po ejemplo imágenes o con oles de odo ipo.
Pa a comenza , añadimos un obje o de ipo Can as con GameObjec →
UI →Can as, y lo enomb amos como HUD. Uni y añadi á además un ob-
je o E en Sys em de o ma au omá ica, que es á elacionado con el manejo
de e en os, aunque pa a lo que p e endemos implemen a no se á necesa io
usa lo. Al añadi el HUD apa ece á un ecuad o que ep esen a á la pan alla,
56
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
}
En el mé odo S a () se accede a los sc ip s de las pan allas de ic o ia
y de o a, y es as se deshabili an inicialmen e. El mé odo FinPa ida() se
pod á llama desde o os sc ip s, y ecibe un un alo booleano que indica
si la pa ida ha acabado con ic o ia o de o a del jugado . Después llama
a una co- u ina que es la que ealmen e ejecu a el código necesa io: habili a
una en ana u o a según si el jugado ha ganado o pe dido, y después de
una espe a de unos pocos segundos se ca ga la escena de nue o con Scene-
Manage .LoadScene(). Es e mé odo ca ga la escena comple a con sus alo es
iniciales, po an o la pa ida se einicia.
El úl imo paso es ealiza la llamada a FinPa ida() desde Con olJuga-
do .cs cuando se pie dan odas las idas o se alcancen los pun os máximos:
Con olJugado .cs
[...]
oid Upda e() {
[...]
i (_pun os >= _maxPun os) {
_sc ip Con olHUD.FinPa ida( ue);
}
[...]
}
public oid Recibi Dispa o(in ue za) {
[...]
i (_ idas < 1) {
_sc ip Con olHUD.FinPa ida( alse);
}
[...]
}
En es e momen o podemos ejecu a la aplicación y comp oba que las
en anas apa ecen co ec amen e al pe de odas las idas o llega al núme o
de pun os obje i o, como mues an las igu as 4.24a y 4.24b.
63

CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
(a) (b)
Figu a 4.24: Pan alla de ic o ia (a) y de de o a (b).
También añadi emos una pan alla de inicio que apa ece á al lanza la
aplicación. Es a pan alla man end á el juego pausado, y pulsa cualquie e-
cla la ocul a á y da á comienzo a la pa ida. Pa a ello la añadi emos al HUD
de la misma o ma que las o as pan allas, y modi ica emos Con olHUD.cs:
Con olHUD.cs
[...]
p i a e GameObjec _pan allaS a ;
oid S a () {
[...]
_pan allaS a = GameObjec .Find("Pan allaS a ");
// juego en pausa
Time. imeScale = 0 ;
}
oid Upda e() {
// comienza la pa ida
i (_pan allaS a .ac i eInHie a chy && Inpu .anyKeyDown) {
_pan allaS a .Se Ac i e( alse);
Time. imeScale = 1 ;
}
}
En S a () ob enemos una e e encia a la pan alla de inicio y ponemos el
juego en pausa poniendo el a ibu o Time. imeScale a 0. En el mé odo Upda-
e(), e i icamos si se ha pulsado cualquie ecla, en cuyo caso deshabili amos
la pan alla y eanudamos el juego.
64
CAPÍTULO 4. DESARROLLO DE UNA APLICACIÓN 3D CON UNITY
Con las ca ac e ís icas que se han implemen ado has a el momen o pode-
mos deci que el juego ya iene odos los elemen os básicos necesa ios pa a
conside a se e minado en cuan o a su uncionalidad, si bien queda ían pen-
dien es o os aspec os como ajus a la di icul ad o puli el aspec o g á ico
con modelos más de allados, ex u as, e c.
65
Capí ulo 5
Mejo a del aspec o g á ico y
e ec os de sonido
Has a es e pun o se han implemen ado los componen es del juego usan-
do los modelos y o mas básicas que p opo ciona Uni y, dejando de lado el
apa ado g á ico y sono o. En es e capí ulo abo da emos cómo mejo a el
aspec o gene al, sus i uyendo pa e de los modelos exis en es po o os más
elabo ados, añadiendo ex u as, sonidos y o os e ec os.
Po o a pa e, ambién con iene conside a que si se p e ende ejecu a
la aplicación en múl iples pla a o mas, es ecomendable no excede se con el
núme o de polígonos, uen es de luz o cualquie elemen o que pueda ene un
g an impac o en el endimien o, sob e odo pensando en disposi i os mó iles.
5.1. Ma e iales
Comenza emos dando colo a algunos elemen os median e ma e iales. Un
ma e ial en Uni y es un elemen o que con iene in o mación ace ca del aspec o
de un obje o, como su colo o luminosidad. Una ez c eado puede aplica se
sob e la supe icie de cualquie obje o de la escena. Pa a asigna un colo al
suelo, po ejemplo, seleccionamos Asse s →C ea e →Ma e ial pa a c ea
un ma e ial. C ea emos ambién un nue o di ec o io ma e iales pa a gua -
da en él odos los que necesi emos. En el inspec o podemos e odas las
p opiedades del ma e ial que se pueden de ini . Una de las más impo an-
es es Albedo, que u iliza emos pa a de ini el colo e de del suelo ( igu a 5.1).
Pa a aplica el ma e ial al suelo, bas a con a as a lo al obje o co es-
pondien e, bien en la lis a de obje os en la is a de je a quía o di ec amen e
66
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Figu a 5.1: Selección de albedo de ma e ial.
sob e el obje o en la escena.
Segui emos un p ocedimien o simila pa a asigna le un ma e ial al p o-
yec il que dispa an los enemigos. Es e es un caso especial, ya que se a a
de un p e ab que se ins ancia con el juego en ejecución y po an o no lo
enemos en la escena. Pa a asigna le el ma e ial, debemos añadi lo a p opó-
si o pa a ealiza el cambio. En p ime luga c eamos un ma e ial nue o, de
colo ama illo, y es ablecemos el alo de Emission a 0.1 pa a que b ille con
algo de luz p opia. Después añadimos el p e ab a la escena y le asignamos el
ma e ial, as lo cual aplicamos los cambios con GameObjec →Apply Chan-
ges To P e ab. Con los cambios aplicados, la ins ancia del obje o ya no es
necesa ia y puede elimina se de la escena.
5.2. Tex u as basadas en sp i es
Además de c ea ma e iales a pa i de colo es y o as p opiedades, am-
bién es posible aplica una ex u a a un obje o de la escena. Pa a ello bas a
con impo a una imagen como sp i e, como se hizo en apa ados an e io es,
y c ea un nue o ma e ial a pa i de ella. A menudo lo más con enien e es
que la imagen sea epe ible pa a pode usa la como un ile, es deci , que po-
damos coloca la misma imagen epe idamen e y no se pe ciba la sepa ación
de una con la siguien e. De es a o ma se pueden c ea g andes supe icies a
pa i de una pequeña imagen ( igu a 5.2).
67
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Figu a 5.2: Imagen empleada como ile.
U iliza emos es a écnica pa a que las pa edes del escena io engan una
ex u a de ablones de made a. T as impo a la imagen como sp i e [20],
c eamos un nue o ma e ial y a as amos el sp i e a la p opiedad Albedo
en el inspec o . También ponemos la p opiedad Smoo hness a 0 pa a que el
ma e ial enga un aspec o ma e. Los pa áme os Tiling (X e Y) con olan el
núme o de epe iciones de la imagen en ambos ejes. Según cada caso puede
se necesa io modi ica es os alo es, en cambio con el alo de 1 po de ec o,
no hay epe iciones y el sp i e se adap a a la supe icie del obje o. El esul ado
de aplica las ex u as se puede ap ecia en la igu a 5.3.
Figu a 5.3: Escena io con ex u as aplicadas a las pa edes.
5.2.1. Tex u as del cielo
También se pueden usa ex u as pa a da le al cielo un aspec o más ealis-
a que el que Uni y p opo ciona po de ec o. Es o se consigue habi ualmen e
c eando lo que se conoce como un Skybox, que es una caja que odea la escena
68

CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
y que iene una ex u a de ondo en cada una de sus seis ca as.
Pa a lle a lo a cabo, comenza emos ob eniendo imágenes ya p epa adas
pa a usa se como Skybox [21]. Después de impo a las imágenes como sp i-
es en Uni y, accedemos al inspec o en cada una de ellas, y cambiamos el
pa áme o W ap Mode aClamp. Es o e i a á que las líneas de in e sección
en e las ca as del cubo sean isibles. Pa a que el cielo de la sensación de se
uni o me y de es a muy alejado de la escena, se usa á un ma e ial con un
shade especial. En odos los ma e iales usados has a el momen o se ha em-
pleado el shade S anda d que iene es ablecido po de ec o. En es a ocasión
c ea emos un ma e ial al que llama emos Cielo, y cambia emos el shade a
Skybox/6-sided. El inspec o del ma e ial cambia á pa a mos a 6 casillas
en las que end emos que in oduci las imágenes impo adas. Po úl imo,
asigna emos es e ma e ial al skybox de la escena en el menú Window →
Ligh ing.
Figu a 5.4: Asignación de las ex u as del cielo.
5.3. Modelos 3D pe sonalizados
Sus i ui los modelos basados en o mas geomé icas básicas po o os
más elabo ados puede con ibui en g an medida al acabado gene al del jue-
go. Pa a u iliza modelos 3D pe sonalizados hay p incipalmen e dos opciones:
ob ene los de la Asse S o e, o c ea los con he amien as ex e nas de mode-
lado e impo a los después. La Asse S o e [22] es un eposi o io de ecu sos
69
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
ealizados po la comunidad, algunos de los cuales son g a ui os y o os de pa-
go. El ca álogo es ealmen e amplio, aunque si se necesi a algo muy especí ico
puede se necesa io ecu i a dichas he amien as pa a ob ene exac amen e
lo que se busca.
5.3.1. Impo ación de modelos con Blende
Comenza emos mos ando como impo a modelos 3D pe sonalizados ea-
lizados con Blende y así emplaza el aspec o que ienen los enemigos y o os
elemen os. Blende es una he amien a de so wa e lib e que pe mi e modela
en 3D, ealiza animaciones y odo ipo de a eas elacionadas con la elabo-
ación de g á icos po compu ado .
En es e caso ha emos uso de es e p og ama pa a ealiza modelos algo
más complejos que los empleados has a aho a. No se en a á en mucho de alle
ace ca de cómo ealiza es os modelos, ya que se a a de una he amien a
ajena al p opio Uni y, pe o el p oceso consis e básicamen e en compone
modelos más elabo ados a pa i de o mas básicas y de ope aciones como
escalados, aslaciones y o aciones. También es posible de ini los ma e iales
del modelo en Blende , o bien impo a el modelo sin ma e iales y c ea los o
modi ica los en Uni y pos e io men e.
Es impo an e ene en cuen a a la ho a de modela el obje o que Blende
u iliza un sis ema de coo denadas dis in o (dex ógi o, a di e encia de Uni y
que usa uno le ógi o). Po ello es impo an e que la o ien ación del obje o
coincida con la espe ada en Uni y, especialmen e si el obje o a a es a en
mo imien o, ya que modi ica los ejes locales del obje o después de habe lo
expo ado puede se más complicado.
70
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Figu a 5.5: Expo ación de modelo 3D en Blende .
Una ez engamos el modelo p epa ado, po ejemplo el de un enemigo,
Blende nos pe mi e expo a lo como a chi o FBX, median e File →Expo
→FBX ( igu a 5.5). De uel a en Uni y, c ea emos un nue o di ec o io, mo-
delos, en el cual impo a emos es e a chi o con la opción Asse s →Impo
New Asse . Jun o al modelo impo ado se c ea á au omá icamen e o o di-
ec o io, Ma e ials, con los ma e iales u ilizados, si es que se ha empleado
alguno.
El siguien e paso es sus i ui el p e ab que hemos es ado u ilizando pa-
a los enemigos po o o que u ilice el nue o modelo. Pa a ello añadimos el
modelo a la escena y le asignamos el sc ip IAEnemigo.cs, así como el p e ab
del p oyec il al sc ip pa a que pueda dispa a lo. El nue o modelo no end á
asociado ningún Collide , que se á necesa io pa a la de ección de los golpes
del jugado , asi que le asociamos uno con o ma de cápsula, seleccionando
el obje o y seleccionando Add Componen →Physics →Capsule Collide .
Median e el bo ón Edi Collide end emos que modi ica el amaño del Co-
llide pa a que se ajus e ap oximadamen e al del modelo ( igu a 5.6). T as
es os pasos podemos gua da el modelo añadido a la escena como p e ab,
y asigna es e mismo p e ab al obje o egene ado de enemigos. Es e nue o
modelo sus i ui á a los enemigos de la escena.
71
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Figu a 5.6: Ajus e de Collide al nue o modelo.
Se segui á el mismo p ocedimien o pa a sus i ui los modelos del bas ón
del jugado y de la o e del escena io, si bien en es e caso no ha á al a
añadi collide s. En el caso del bas ón, nos asegu a emos que enga asignado
su sc ip co espondien e, Mo imien oBas on.cs.
5.3.2. Impo ación de modelos de la Asse S o e
Como al e na i a a c ea los modelos y ma e iales desde ce o, desde la
Asse S o e de Uni y se pueden impo a odo ipo de componen es ealiza-
dos po a is as y usua ios de la comunidad. Se puede accede a ella desde la
p opia he amien a o desde un na egado web. Pa a nues a aplicación im-
po a emos uno de los paque es de modelos g a ui os que es án disponibles
pa a añadi una casa a la escena [23].
Después de encon a el ecu so que se quie a u iliza , bas a con pulsa
el bo ón de Impo a pa a que se añadan los elemen os seleccionados ( igu a
5.7).
72
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
p i a e loa ps = 0.0 ;
p i a e bool mos a FPS = alse;
[Se ializeField] p i a e GameObjec menu;
[Se ializeField] p i a e GameObjec jugado ;
[Se ializeField] p i a e GameObjec bas on;
[Se ializeField] p i a e GameObjec cama a;
[Se ializeField] p i a e GameObjec c edi os;
p i a e bool sonidoAc i ado = ue;
[...]
oid S a () {
[...]
menu.Se Ac i e( alse);
c edi os.Se Ac i e( alse);
Cu so . isible = alse;
}
oid Upda e() {
// ESC ab e el menu
i (Inpu .Ge Key(KeyCode.Escape)) {
ab i Menu();
}
// calcula FPS
i (mos a FPS) {
iempoAcum += Time.del aTime;
i ( iempoAcum > in e aloAc FPS) {
ps = 1.0 / Time.del aTime;
iempoAcum = 0.0 ;
}
con ado FPS. ex = "FPS: " + ps.ToS ing("F2");
}
else {
con ado FPS. ex = "";
}
}
public oid bo onSali () {
79

CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Applica ion.Qui ();
}
public oid bo onFPS() {
mos a FPS = !mos a FPS;
}
public oid ab i Menu() {
Time. imeScale = 0.0 ;
Cu so . isible = ue;
jugado .Ge Componen <Mi a Al ededo >().enabled = alse;
bas on.Ge Componen <Mo imien oBas on>().enabled = alse;
cama a.Ge Componen <Mi a Al ededo >().enabled = alse;
menu.Se Ac i e( ue);
c edi os.Se Ac i e( alse);
}
public oid ce a Menu() {
Time. imeScale = 1.0 ;
Cu so . isible = alse;
jugado .Ge Componen <Mi a Al ededo >().enabled = ue;
bas on.Ge Componen <Mo imien oBas on>().enabled = ue;
cama a.Ge Componen <Mi a Al ededo >().enabled = ue;
menu.Se Ac i e( alse);
}
public oid mos a C edi os() {
menu.Se Ac i e( alse);
c edi os.Se Ac i e( ue);
}
public oid ce a C edi os() {
c edi os.Se Ac i e( alse);
menu.Se Ac i e( ue);
}
public oid bo onSonido() {
sonidoAc i ado = !sonidoAc i ado;
i (sonidoAc i ado) {
AudioLis ene . olume = 1;
}
else {
AudioLis ene . olume = 0;
80
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
}
}
[...]
}
Como se puede obse a en el código, la mayo ía de es as unciones habili-
an o deshabili an los componen es del menú que se quie en mos a en cada
momen o. Dado que enemos odos los bo ones ag upados como obje os hijos
de Menu, cambia la isibilidad de es e obje o hace lo mismo con el menú
comple o. En cuan o a Upda e(), aquí se ha añadido la lógica que calcula la
asa de ames po segundo. Pa a e i a que el indicado cambie demasiado
ápido, se ac ualiza á cada medio segundo.
Figu a 5.13: Selección de mé odo asociado a un bo ón.
Como úl imo paso, end emos que asocia cada bo ón con el mé odo co-
espondien e. Pa a ello, selecciona emos cualquie bo ón pa a accede al
inspec o ( igu a 5.13). Aquí podemos modi ica pa áme os como el aspec o
del bo ón o si se quie e u iliza una imagen en su luga , po ejemplo. En la
pa e in e io , en la p opiedad OnClick(), enemos una casilla donde end e-
mos que selecciona el obje o que enga asociado el sc ip Con olHUD.cs,
que en es e caso es Con olado HUD. T as hace lo, pod emos selecciona en
el desplegable de la de echa cualquie mé odo del sc ip , que se ejecu a á al
pulsa del bo ón. El esul ado se mues a en la igu a 5.14.
81
CAPÍTULO 5. MEJORA DEL ASPECTO GRÁFICO Y EFECTOS DE
SONIDO
Figu a 5.14: Menú de opciones.
82
Capí ulo 6
E olución de la Realidad
Vi ual y opciones disponibles
en Uni y
6.1. De inición e his o ia
La ealidad i ual consis e en un conjun o de ecnologías, gene almen e
elacionadas con la compu ación, que simulan un en o no eal o imagina io
a a és de un casco o iso que gene a imágenes, sonidos u o as sensacio-
nes. El usua io de es as ecnologías es capaz de mi a al ededo en un en o no
inme si o gene ado po o denado , y a menudo in e ac ua con sus elemen os.
No hay un acue do ace ca del o igen exac o de la ealidad i ual, pe o
los p ime os plan eamien os a ni el eó ico se emon an a la década de los
años 50 [29]. En 1962, Mo on Heilig cons uyó un disposi i o mecánico al
que llamó Senso ama, que podía ep oduci cinco películas de co a du ación
y es imula los sen idos de la is a, el oído, el ol a o y el ac o ( igu a 6.1).
Du an e esa misma época, Douglas Engelba u ilizó pan allas de compu-
ado es como disposi i os de en ada y salida. En 1968, I an Su he land dise-
ñó con ayuda de su alumno Bob Sp oull el p ime casco de ealidad i ual y
ealidad aumen ada. E a bas an e p imi i o en cuan o a ealismo, ya que los
g á icos gene ados es aban compues os únicamen e po igu as geomé icas
en wi e ame, y e a an pesado que enía que es a suspendido del echo. Po
es a azón, es e disposi i o ecibió el nomb e de La espada de Damocles.
En las décadas de 1970 y 1980, des aca el Aspen Mo ie Map c eado po el
83
CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
Figu a 6.1: Senso ama. Fuen e: wikipedia.o g.
MIT (Ins i u o Tecnológico de Massachuse s), que ue una ec eación i ual
en la que los usua ios podían eco e las calles de Aspen, Colo ado. Las dos
p ime as ec eaciones es aban hechas con o og a ías, y la e ce a con g á i-
cos gene ados po compu ado . La compañía A a i undó un labo a o io de
in es igación de ealidad i ual en 1982, que u o que ce a as dos años
de ac i idad debido a la c isis de la indus ia de los ideojuegos de 1983 [29].
Sin emba go, sus empleados con inua on con sus in es igaciones en ecnolo-
gías elacionadas con la ealidad i ual.
En el año 1991, se c eó la p ime a habi ación cúbica inme si a, conocida
como The Ca e [30]. Consis ía en un en o no con múl iples imágenes p oyec-
adas que pe mi ía que el usua io ie a su p opio cue po en elación al de
o os den o de la habi ación.
En ese mismo año, Sega anunció el Sega VR Headse pa a maquinas e-
c ea i as [31] y su consola Mega D i e. Tenía pan allas LCD, sonido es é eo
y senso es que de ec aban la posición de la cabeza del usua io. La compañía
Vi uali y [32] lanzó el p ime sis ema VR mul ijugado , que incluía un cas-
co y guan es pa a múl iples usua ios. El sis ema comple o enía un cos e de
$73.0000.
84

CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
En el año 1995 Nin endo lanzó su consola Vi ual Boy ( igu a 6.2), que si
bien no se conside a una máquina de ealidad i ual, e a capaz de mos a
3D es e eoscópico median e un e ec o de pa alaje. Es e año ambién se lanzó
el casco de ealidad i ual VFX-1 ( igu a 6.3), que uncionaba conec ado a
un PC y e a compa ible con juegos como Descen ,Sys em Shock oQuake.
Figu a 6.2: Consola Vi ual Boy. Fuen e: pix ans.com.
Ya en la década de los 2000, en 2001 se diseña la p ime a habi ación
inme si a que unciona con un PC, la SAS3 o SAS Cube. En 2010, Palme
Luckey diseña el p ime p o o ipo de Oculus Ri , que como p incipal no-
edad o ecía un campo de isón de 90o. En 2013, Val e hizo impo an es
p og esos en la eliminación del e a do en la isualización de con enido en
ealidad i ual, y en 2014 mos ó un p o o ipo de S eamSigh , un disposi i o
con pan allas sepa adas pa a cada ojo de esolución 1K y len es de F esnel,
que se ca ac e izan po ene una g an ape u a y co a dis ancia ocal.
En 2014, Facebook comp ó Oculus VR y Sony anunció P ojec Mo p-
heus, que más a de enomb a ía como PlayS a ion VR, un casco de ealidad
i ual pa a la consola PlayS a ion 4. Es e año Google ambién anuncia Ca d-
boa d, un iso que el p opio usua io puede cons ui se con una plan illa de
ca ón, y que si e de sopo e a un elé ono mó il con el que se isualiza el
con enido en VR.
En 2015, HTC y Val e anuncian HTC Vi e, un conjun o de disposi i-
os que incluyen un casco de ealidad i ual, con olado es, y senso es que
pueden epa i se po una habi ación pa a egis a la posición del usua io
85
CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
median e in a ojos. En 2016 se epa ie on las p ime as unidades de es e
disposi i o pa a usa se con la pla a o ma S eam VR.
Figu a 6.3: Casco VFX-1. Fuen e: wikipedia.o g.
En la ac ualidad, hay una g an can idad de compañías desa ollando p o-
duc os elacionados con la ealidad i ual, incluyendo g andes emp esas con
depa amen os dedicados exclusi amen e a es e á ea, como Google, Apple,
Amazon, Mic oso , Sony o Samsung. Hay cie os aspec os en los que se pue-
den hace g andes a ances, como los con olado es háp icos, que no es án
muy desa ollados oda ía, la esolución de la imagen o la asa de e es-
co. La ealidad i ual hoy en día iene aplicación en muchos campos: en la
indus ia del en e enimien o (cine y ideojuegos p incipalmen e), medicina
( a amien o de en e medades), en la educación y en enamien o pa a odo
ipo de ac i idades, en ingenie ía y a qui ec u a, a e, ma ke ing, e c.
6.2. Pla a o mas ac uales de ealidad i ual
y sopo e en Uni y
Uni y pe mi e desa olla aplicaciones pa a las p incipales pla a o mas
ac uales de ealidad i ual y ealidad aumen ada. A con inuación se desc i-
bi án las ca ac e ís icas de es as pla a o mas.
6.2.1. Oculus Ri
Oculus Ri ( igu a 6.4) [34] es un casco de ealidad i ual desa ollado
po Oculus VR, una compañía independien e que undó es e p oyec o con
86
CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
éxi o en 2012 a a és de la pla a o ma Kicks a e . La compañía ue com-
p ada pos e io men e po Facebook en Ma zo de 2014.
Figu a 6.4: Oculus Ri . Fuen e: wikipedia.o g
An es de se lanzada al público, se dis ibuye on a ios p o o ipos como
ki pa a desa ollado es pa a que hubiese aplicaciones lis as pa a el lanza-
mien o. Desde en onces, pos e io es e isiones han mejo ado sus ca ac e ís-
icas écnicas.
El modelo ac ual, conocido como Consume Ve sion 1, iene las siguien es
ca ac e ís icas:
Pan alla OLED es e eoscópica con una esolución o al de 2160x1200
(1080x1200 po cada ojo).
90 Hz de asa de e esco.
Campo de isión de 110o.
Sepa ación en e len es ajus able.
Au icula es de audio 3D in eg ados.
Admi e el uso de con olado es ( igu a 6.5).
El sis ema de posicionamien o de Oculus Ri ecibe el nomb e de Cons-
ella ion y unciona median e un disposi i o de ec o de in a ojos que se
conec a al casco median e una conexión USB. Es e disposi i o de ec a la luz
que emi en unos LED de in a ojos in eg ados en el casco. Es e casco de ec a
la posición y o ación de la cabeza median e 6 ejes. En cuan o a los con o-
lado es, son dos disposi i os con bo ones y senso es pa a se as eados de
la misma o ma que el casco. También se admi e el uso del con olado de
87
CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
Xbox One, que iene incluido con cada unidad de Oculus Ri . El cos e del
casco con los pe i é icos necesa ios es de 590 eu os ap oximadamen e, y el de
los mandos (opcionales) es de 120 eu os.
Figu a 6.5: Con olado es de Oculus Ri .
Como equisi os pa a u iliza es a pla a o ma, la compañía ecomienda
un PC con p ocesado In el Co e i3-6190 o AMD FX 4350, a je a g á ica
N idia GeFo ce GTX 960 o equi alen e, 3 pue os USB y sis ema ope a i o
Windows 8 o supe io .
6.2.2. Google Ca dboa d
Google Ca dboa d es una pla a o ma desa ollada po Google y des ina-
da a emplea como iso cualquie elé ono compa ible jun o con un sopo e
de ca ón que incluye unas len es y un ga illo magné ico ( igu a 6.6). Su
p incipal en aja es que es una o ma accesible y económica de ob ene un
disposi i o de ealidad i ual, ya que cualquie pe sona puede ealiza el
mon aje del iso a pa i de los ma e iales necesa ios.
T as mon a el sopo e de ca ón con las len es, el elé ono se in odu-
ce en la pa e pos e io . Las aplicaciones desa olladas pa a es a pla a o ma
di iden la pan alla en dos y aplican un e ec o de dis o sión que, jun o con
el e ec o de las len es, p oduce una imagen es e eoscópica con un campo de
isión bas an e amplio.
Exis en muchos modelos de iso disponibles, y cada uno de e mina los
equisi os necesa ios del elé ono que se aya a u iliza , si bien en la mayo ía
88
CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
6.3. Sopo e en Uni y pa a pla a o mas de
ealidad i ual
Como se ha comen ado an e io men e, Uni y pe mi e desa olla apli-
caciones de ealidad i ual pa a las p incipales pla a o mas ac uales. La
compañía des aca la capacidad del mo o pa a consegui un ende izado op-
imizado y al as asas de e esco, e sa ilidad en e las dis in as pla a o mas
median e el uso de he amien as de desa ollo especí icas (SDKs) y una es-
echa colabo ación con los ab ican es de los dis in os disposi i os.
Has a hace poco Uni y daba sopo e a cada pla a o ma únicamen e me-
dian e la impo ación de plugins o SDKs especí icos, pe o en u u as e siones
el mo o a o ece á el uso del sopo e na i o inco po ado, que no equie e la
impo ación de es os paque es y o ece uncionalidades básicas de ealidad
i ual [40]. Es o se consigue habili ando la opción Vi ual Reali y Suppo ed
en la con igu ación de Playe Se ings ( igu a 6.12) y a con inuación eligiendo
la pla a o ma deseada en el menú desplegable. Es e mé odo se ía el mismo
pa a cualquie pla a o ma con sopo e na i o disponible. Sin emba go, pa a
el uso de cie as unciones, y dependiendo de la pla a o ma, oda ía puede
se necesa ia la impo ación del SDK co espondien e, po ejemplo si se a a
da sopo e a con olado es de Dayd eam o se quie en u iliza cie os p e abs
incluidos en el ki de desa ollo [44]. En es e caso la opción Vi ual Reali y
Suppo ed debe á es a desac i ada.
Figu a 6.12: Opción Vi ual Reali y Suppo ed en Playe Se ings.
En el siguien e capí ulo se desc ibi á cómo lle a a cabo una con e sión
de la aplicación desa ollada a la ealidad i ual en la pla a o ma Ca d-
boa d median e el SDK Google VR pa a Uni y, abo dando dos adap aciones
95

CAPÍTULO 6. EVOLUCIÓN DE LA REALIDAD VIRTUAL Y
OPCIONES DISPONIBLES EN UNITY
a disposi i os con mé odos de con ol dis in os. La impo ación del SDK se á
necesa ia en es e caso, po que la e sión de Uni y u ilizada en es e p oyec o,
la 5.5, oda ía no dispone de sopo e na i o que uncione co ec amen e pa a
es a pla a o ma.
El SDK de Google VR es á disponible pa a Uni y, And oid, iOS y Un eal
Engine 4, y da sopo e an o pa a Ca dboa d como pa a Dayd eam en odas
es as pla a o mas excep o en iOS, donde sólo se da sopo e a Ca dboa d [41].
Impo a es e ki de desa ollo nos pe mi i á usa los componen es ne-
cesa ios pa a que la aplicación haga uso de ealidad i ual, como p e abs
y sc ip s que incluyen uncionalidades de isión es e eoscópica, e en os, au-
dio pa a en o nos inme si os, e c. El p oceso de impo ación y uso del SDK
ambién se de alla á en el siguien e capí ulo.
En u u as e siones de Uni y, si se u iliza a el sopo e na i o, los pasos
a segui se ían los mismos o muy simila es, pe o ya no exis i ía la necesidad
de impo a manualmen e ningún paque e adicional.
96
Capí ulo 7
Adap ación de la aplicación a
disposi i os de Realidad Vi ual
En es e capí ulo se abo da á el p oceso de adap ación a la ealidad i ual
de la aplicación 3D desa ollada en capí ulos an e io es, usando el SDK de
Google VR pa a Uni y y eniendo como obje i o que uncione an o en iso es
Ca dboa d como en iso es con con olado .
7.1. Impo ación del SDK Google VR
En p ime luga , se á necesa io ene ins alados en el sis ema el SDK de
And oid y el JDK (Ja a De elopmen Ki ) de Ja a, pa a pode ealiza la
compilación del ejecu able pa a And oid. Ambos pueden ob ene se ácilmen-
e y de o ma g a ui a en sus espec i os si ios web [42] [43].
T as la ins alación de ambas he amien as de desa ollo, hay que es able-
ce en Uni y la u a a las lib e ías de cada una. Es o se puede con igu a en
el menú Edi →P e e ences →Ex e nal Tools, en los campos SDK yJDK
espec i amen e ( igu a 7.1).
El siguien e paso se á impo a los paque es eque idos del SDK de Goo-
gle VR pa a Uni y según la pla a o ma. Es impo an e señala que es e paso
es necesa io en la e sión de Uni y u ilizada en es e p oyec o ( e sión 5.5),
pe o a pa i de la e sión 5.6, ac ualmen e disponible en p uebas, Google
VR iene in eg ado de o ma na i a y no se ía necesa io ealiza la impo a-
ción de los paque es.
T as desca ga el SDK de su si io web [44], ol emos a Uni y y selec-
97
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.1: Con igu ación de SDK de And oid y JDK.
cionamos Asse s →Impo New Asse s →Cus om Packages pa a indica
la u a del SDK. Nos apa ece á una en ana desde la que podemos selec-
ciona indi idualmen e los componen es que deseamos impo a al p oyec o
( igu a 7.2). Es os componen es apa ecen sepa ados po ca ego ías, y seleccio-
na emos unas u o as según nues as necesidades. La ca ego ía Demos, po
ejemplo, incluye demos aciones pa a p oba algunos componen es de RV,
aunque pa a nues o p oyec o no se á necesa io impo a los. Legacy con ie-
ne componen es de e siones an e io es del SDK pa a Ca dboa d que es án
siendo sus i uidos, aunque oda ía se pueden u iliza en la e sión ac ual.
Aunque no u iliza emos ninguno de es os componen es, no impo a los ha
ocasionado algunos p oblemas al ejecu a la aplicación, po an o los inclui-
emos. Al hace lo puede apa ece una pan alla ad i iendo de que se es án
usando paque es obsole os, a pesa de ello con inua emos con el p oceso. La
ca ego ía iOS end emos que inclui la si p e endemos dis ibui la aplicación
en es a pla a o ma. T as e mina con la selección pulsamos el bo ón Impo .
Cuando haya inalizado el p oceso de impo ación, en e los a chi os del
p oyec o end emos un nue o di ec o io Google VR, que con end á odos los
elemen os impo ados.
7.2. Adap ación al iso Ca dboa d
A la ho a de adap a la aplicación a iso es de ipo Ca dboa d, hay que
ene en cuen a que la capacidad que iene el jugado pa a in e ac ua con el
98
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.2: Selección de paque es del SDK Google VR.
en o no se educe, ya que el iso sólo dispone de un ga illo con dos es ados
posibles (pulsado o no). Po an o, además de do a al juego de isión es e-
eoscópica con el SDK de Google VR, hab á que hace cambios en algunas
de las mecánicas del juego pa a que sea ealmen e uncional.
7.2.1. Cambios en las mecánicas
Al no ene disponibles bo ones de di ección que si podemos ap o echa
en un eclado o en cualquie con olado , el p incipal cambio que se lle a á a
cabo es que el mo imien o del jugado siga un eco ido p ede e minado po
el escena io. El jugado pod á mi a hacia donde quie a con el mo imien o
de la cabeza, que se á comple amen e independien e del mo imien o de des-
plazamien o. Pues o que se pie de es a libe ad de mo imien o, ambién se
pie de la capacidad de ace ca se a los enemigos pa a golpea les desde co a
dis ancia. Po an o, la o ma de de o a a los enemigos se á dispa ando
p oyec iles de la misma o ma que hacen ellos, usando el ga illo del iso
Ca dboa d.
Como al e na i a a es a solución, se ha conside ado la posibilidad de ha-
ce que el jugado se mue a en odo momen o hacia donde es é mi ando.
Es a opción iene como p incipal en aja que se conse a el desplazamien o
lib e, aunque iene o os incon enien es. Uno de ellos es que equie e que el
jugado que enga pues o el iso es é de pie y gi ando sob e si mismo con-
99
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
inuamen e pa a cambia de di ección. Además el mo imien o no se pe cibe
an na u al cuando se es á mi ando hacia a iba o hacia abajo, ya que en esos
casos el desplazamien o sigue siendo ho izon al y no coincide con la di ección
de la mi ada. Po es os mo i os inalmen e se ha op ado po implemen a un
eco ido p ede e minado.
Pa a lle a lo a cabo, pa i emos del p oyec o de Uni y donde lo dejamos,
as la mejo a de los g á icos y la inco po ación de sonidos y o os e ec os.
La implemen ación del eco ido que ealiza á el jugado se puede a on a
de a ias mane as, en es a ocasión lo ha emos median e pun os de con ol.
C ea emos es os pun os de con ol como obje os acíos (desde el menú,
GameObjec →C ea e Emp y) a los cuales añadi emos un componen e Box-
Collide (desde el inspec o del obje o, Add Componen →Physics →Box
Collide ), como mues a la igu a 7.3.
Figu a 7.3: Pun o de con ol con BoxCollide .
Es os obje os se án in isibles pa a el jugado , ya que no ienen una o ma
ni ex u a asignada, y los epa i emos po el escena io en pun os de e mi-
nados pa a que es e e ec úe una o ación cuando en e en con ac o con ellos.
Es o debe se así po que modi ica emos el mo imien o del p opio jugado
pa a que se mue a de o ma con inua hacia adelan e, po an o se án los
pun os de con ol los que indiquen al jugado cómo iene que gi a . En las
p opiedades del BoxCollide , nos asegu a emos que la casilla IsT igge es é
ac i ada pa a que podamos de ec a la colisión median e un sc ip .
100

CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Llama emos a es e nue o sc ip Con olRo acion.cs y se lo asigna emos
al pun o de con ol:
Con olRo acion.cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Con olRo acion : MonoBeha iou {
public loa angulo;
oid OnT igge En e (Collide o he ) {
Mo imien oJugado jug = o he .Ge Componen <Mo imien oJugado >();
i (jug != null) {
jug.Ro a (angulo);
}
}
}
Como se puede ap ecia en el código, se a a de un sc ip que decla a
una a iable pa a almacena la o ación que end á que e ec ua el jugado , y
que cuando de ec a la colisión con es e, llama al mé odo Ro a () pasando la
o ación como a gumen o. La a iable de o ación es á decla ada como pú-
blica pa a que se pueda modi ica con acilidad desde el en o no de Uni y, ya
que cada ins ancia de un pun o de con ol end á almacenada una o ación
dis in a.
El mé odo Ro a () lo end á accesible el jugado en su sc ip Mo imien-
oJugado .cs, el cual end emos que modi ica de la siguien e mane a:
Mo imien oJugado .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Mo imien oJugado : MonoBeha iou {
public loa el;
101
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
oid Upda e () {
ans o m.T ansla e(0, 0, el * Time.del aTime);
}
public oid Ro a ( loa angulo) {
S a Co ou ine(Ro a Co u ina(angulo));
}
p i a e IEnume a o Ro a Co u ina( loa angulo) {
el = 0;
i (angulo < 0) {
o (in i = 0; i != angulo; i = i - 15) {
ans o m.Ro a e(new Vec o 3(0, -15, 0));
yield e u n new Wai Fo Seconds(0.1 );
}
}
else i (angulo > 0) {
o (in i = 0; i != angulo; i = i + 15) {
ans o m.Ro a e(new Vec o 3(0, 15, 0));
yield e u n new Wai Fo Seconds(0.1 );
}
}
el = 8.0 ;
}
}
El mé odo Upda e() se ha simpli icado espec o al juego o iginal a una
sóla línea, en la que hacemos a anza al jugado hacia adelan e. En cuan o
al mé odo Ro a () que llama á cada pun o de con ol, llama a su ez a una
co u ina, que u iliza emos pa a implemen a la animación de gi o del jugado
median e e a dos sin pausa el es o de la escena, de o ma simila a como
se hizo con la animación de los enemigos al desapa ece .
Es a pequeña animación iene como obje i o que el gi o no se ealice in-
media amen e, po que de ocu i así pod ía deso ien a al jugado , sob e odo
eniendo en cuen a los pun os de con ol son in isibles pa a él. En su luga ,
se de iene su mo imien o y se hace el gi o p og esi amen e en in e alos de
15ocada décima de segundo. De es a o ma pe cibi á mejo que es á o ando
sob e si mismo.
102
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
En cuan o al sc ip Mi a Al ededo .cs, que eníamos asociado al jugado
y ambién a la cáma a, lo elimina emos de ambos, ya que el mo imien o de
cabeza ya no se á con olado con el a ón , sino po el gi oscopio del dispo-
si i o de ealidad i ual, como e emos más adelan e.
Aho a que dependemos po comple o de los pun os de con ol pa a decidi
el mo imien o, los epa i emos po la escena asignando a cada uno el alo de
o ación adecuado pa a que el eco ido pase po las zonas más impo an es
y uel a al comienzo, como mues a la is a aé ea de la escena en la igu a 7.4.
Figu a 7.4: Reco ido de e minado po pun os de con ol.
Po o a pa e, ambién ma ca emos la casilla isT igge del CapsuleCo-
llide de los enemigos. De es a o ma pod emos segui de ec ando colisiones
con ellos, pe o no desplaza án al jugado si llegan a choca con él. Con el e-
co ido es ablecido el jugado da á uel as has a que se cumpla la condición
de ic o ia o de de o a. Sin emba go, hab á que hace algunas modi icacio-
nes más pa a que pueda dispa a p oyec iles.
La implemen ación de los dispa os se ha á de la misma o ma que en el
caso de los enemigos, ins anciando el p e ab de un p oyec il. Pa a ello modi-
ica emos el mé odo Upda e() del sc ip Con olJugado .cs, y añadi emos el
mé odo Ano a Pun o():
103
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Con olJugado .cs
[...]
oid Upda e() {
i (G Viewe .Ins ance.T igge ed) {
Vec o 3 cen o = new Vec o 3(_cama a.pixelWid h / 2,
_cama a.pixelHeigh / 2, 0);
Ray ay = _cama a.Sc eenPoin ToRay(cen o);
Raycas Hi hi ;
i (Physics.Raycas ( ay, ou hi )) {
_p oyec il = Ins an ia e(p oyec ilP e ab) as GameObjec ;
_p oyec il. ans o m.posi ion =
ans o m.T ans o mPoin (new Vec o 3(0, 1.5 , 0.5 ));
_p oyec il. ans o m.LookA (hi .poin );
}
}
}
public oid Ano a Pun o() {
_pun os++;
_sc ip Con olHUD.Ac ualiza Pun os(_pun os, _maxPun os);
i (_pun os >= _maxPun os) {
_sc ip Con olHUD.FinPa ida( ue);
}
}
En Upda e(), se sigue una lógica muy simila a la de los dispa os enemigos,
con algunas di e encias. En p ime luga , en cada i e ación comp obamos si
el ga illo del iso de Ca dboa d ha sido p esionado, consul ando el booleano
G Viewe .Ins ance.T igge ed. En caso a i ma i o, p oyec amos un aycas
hacia el cen o de la cáma a, en ez de simplemen e hacia adelan e, como
hacen los enemigos. Es e pun o se calcula di idiendo en e 2 las p opieda-
des pixelWid h (ancho) y pixelHeigh (al o) del GameObjec de la cáma a,
pa a ob ene las componen es X e Y espec i amen e. Si el aycas colisona
con cualquie obje o, se ins ancia á el p e ab del p oyec il en e al jugado
y se le asigna á la o ien ación necesa ia pa a que apun e hacia el pun o de
colisión, lo cual se especi ica con ans o m.LookA (hi .poin ). De es a o ma
conseguimos que el p oyec il siga la misma di ección que el aycas , jus o
hacia donde el jugado es é mi ando.
104
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.10: Aplicación Ca dboa d en Play S o e.
La aplicación Ca dboa d consis e básicamen e en un lanzado de odas
las aplicaciones ins aladas en el disposi i o con sopo e pa a es a pla a o -
ma ( igu a 7.11a), además de una sección que pe mi e descub i aplicaciones
adicionales. No es necesa io usa el lanzado pa a ejecu a las aplicaciones
ins aladas, sin emba go es especialmen e ú il pa a pode cambia en e dis-
in os iso es. Es o se puede hace u ilizando la cáma a del disposi i o mó il
pa a escanea el código QR que ienen imp eso los iso es de Ca dboa d. T as
en oca el código, la aplicación Ca dboa d op imiza á la expe iencia pa a el
iso que es é seleccionado ( igu a 7.11b).
T as lanza la aplicación, ya podemos in oduci el elé ono en el iso y
juga . Pa a ce a la, podemos pulsa el bo ón de la ueda que apa ece en la
esquina supe io de echa pa a ol e al lanzado . Desde ahí, podemos ab i el
panel de aplicaciones abie as con el bo ón cuad ado (es o puede a ia según
la e sión del sis ema ope a i o) y a as a la pa a ce a la de ini i amen e.
7.3. Adap ación a iso con con olado
A con inuación se mos a á como adap a la aplicación a un iso que
disponga de un con olado p opio. En es e caso el p oceso de adap ación
no eque i á hace an os cambios como en los iso es Ca dboa d, ya que
al ene disponibles un joys ick y a ios bo ones, la jugabilidad o iginal se
111

CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
(a) (b)
Figu a 7.11: Lanzado de Ca dboa d (a) y iso seleccionado (b).
puede man ene in ac a. El jugado pod á mo e se de nue o lib emen e u i-
lizando el joys ick, y al mismo iempo pod á mi a hacia donde quie a de
o ma independien e.
Pa a ello se ha op ado po u iliza un iso Pasonomi VR como el que
mues a la igu a 7.12. Es e iso es compa ible con aplicaciones Ca dboa d,
y se puede u iliza jun o con un con olado que se conec a al disposi i o mó-
il median e Blue oo h. Viso es simila es a es e es án disponibles po unos
20 eu os ap oximadamen e. Sus p incipales en ajas espec o a los iso es de
ca ón es que son más du ade os y suelen ene egulado es pa a ajus a la
dis ancia ocal o la sepa ación en e las len es. Sin emba go, lo más in e e-
san e conside ando las aplicaciones es que el uso del con olado nos da más
libe ad de acción al dispone de a ios bo ones.
Pa iendo de nue o del p oyec o de Uni y o iginal, en el que el jugado
puede golpea a los enemigos con el bas ón, impo a emos los paque es del
SDK de Google VR de la misma mane a que hicimos en la adap ación a los
iso es Ca dboa d.
112
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.12: Viso Pasonomi VR.
Una ez engamos los paque es impo ados, los únicos cambios que eali-
za emos en el juego o iginal se ha án pa a con e i el mo imien o exis en e
del jugado (basado en el eclado y el a ón) en un mo imien o con con o-
lado usando una cáma a de ealidad i ual.
Si eco damos la con igu ación del jugado y de la cáma a, es a es un
obje o hijo del obje o jugado en la je a quía, po an o la cáma a sigue al
jugado y ealiza sus mismos mo imien os. Po o a pa e, enemos un sc ip
asociado a ambos obje os, Mi a Al ededo .cs, que con ola de o ma indepen-
dien e su o ación con el a ón. Si mo emos el a ón en el eje ho izon al, el
jugado (y po an o, ambién la cáma a) gi an de izquie da a de echa. Si
mo emos el a ón en el eje e ical, sólo la cáma a se mue e de a iba a abajo.
Si nos limi á amos a con e i la cáma a exis en e en una cáma a de
ealidad i ual como se hizo con el iso Ca dboa d, el sc ip Mi a Al ede-
do .cs no end ía ningún e ec o, ya que no de ec a ía el a ón, mien as que
el mo imien o de cabeza únicamen e a ec a ía a la cáma a. El desplazamien-
o median e el eclado se aslada ía al con olado , de o ma que el jugado
pod ía mo e se, pe o la di ección de mo imien o no se e ía a ec ada po la
di ección de la mi ada.
Po es os mo i os, end emos que cambia la con igu ación inicial. En es a
ocasión nos basa emos únicamen e en el mo imien o de cabeza que de ec a
113
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
el gi oscopio del disposi i o y en los bo ones del con olado . La cáma a,
con olada po el gi oscopio del disposi i o, se á la que de e mine la o ación
del jugado , de o ma que los mo imien os de desplazamien o con el joys ick
se án ela i os a la di ección en la que se es é mi ando. Es e es el mé odo de
con ol más habi ual en los ideojuegos en p ime a pe sona.
El p ime paso se á mo e la cáma a p incipal en la je a quía de obje os,
pa a que ya no sea hija del obje o jugado . Siendo un obje o independien e,
necesi a emos un nue o sc ip que haga que siga al jugado en odo momen o.
Es e sc ip , Segui Jugado .cs, sus i ui á a Mi a Al ededo .cs. El código se
mues a a con inuación:
Segui Jugado .cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Segui Jugado : MonoBeha iou {
p i a e GameObjec _jugado ;
oid S a () {
_jugado = GameObjec .Find("Jugado ");
}
oid Upda e () {
ans o m.posi ion =
new Vec o 3(_jugado . ans o m.posi ion.x,
_jugado . ans o m.posi ion.y + 0.5 ,
_jugado . ans o m.posi ion.z);
}
}
De o ma simila a o os sc ip s is os an e io men e, buscamos el Ga-
meObjec del jugado po nomb e con el mé odo Find(). En el mé odo Up-
da e(), ac ualizamos la posición de la cáma a pa a que sea igual a la del
jugado , con un pequeño desplazamien o en el eje Y pa a que es é a la al u a
de lo que se ía la cabeza.
En el obje o del jugado ambién elimina emos el sc ip Mi a Al ededo .cs
y lo sus i ui emos po Ro a ConCama a.cs:
114
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Ro a ConCama a.cs
using Sys em.Collec ions;
using Sys em.Collec ions.Gene ic;
using Uni yEngine;
public class Ro a ConCama a : MonoBeha iou {
p i a e GameObjec _cama aVR;
oid S a () {
_cama aVR = GameObjec .Find("Main Came a");
}
oid Upda e () {
loa _ o acionH = _cama aVR. ans o m.localEule Angles.y;
ans o m.localEule Angles =
new Vec o 3( ans o m.localEule Angles.x,
_ o acionH,
ans o m.localEule Angles.z);
}
Con es e sc ip ob enemos la o ación ho izon al de la cáma a p incipal y
la aplicamos al jugado . Con es a nue a disposición de obje os y los nue os
sc ip s, el gi oscopio del disposi i o o a la cáma a p incipal, y es a a su ez
o a ho izon almen e al jugado . Los con oles de desplazamien o de inidos
en Con olJugado .cs siguen siendo álidos, y aho a se aplica án al joys ick
del con olado . En es e mismo sc ip hab á que hace algunos cambios: en
el mé odo S a () se es á ob eniendo una e e encia a la cáma a p incipal
median e Ge Componen InChild en(). Es e mé odo no ob end á la cáma a
co ec amen e con la nue a con igu ación, pues o que la cáma a ya no es
un GameObjec hijo del jugado . Po an o la ob end emos con el mé odo
Find():
Con olJugado .cs
[...]
oid S a () {
[...]
_cama a = GameObjec .Find("Main Came a").Ge Componen <Came a>();
[...]
}
[...]
115
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Al e na i amen e, en ez de modi ica Con olJugado .cs, pod ía c ea se
un nue o sc ip con es os cambios. De odas o mas, si man enemos un p o-
yec o de Uni y pa a cada adap ación de la aplicación, cada p oyec o puede
ene su p opia e sión del sc ip .
Po o a pa e, sus i ui emos la de ección del bo ón izquie do del a ón
po cualquie a de los dos bo ones de acción del con olado . Es os dos bo o-
nes son accesibles median e los iden i icado es Fi e1 yJump espec i amen e.
Po an o, sus i ui emos los mé odos Ge MouseBu onDown(0) yGe Mou-
seBu onUp(0) po Ge Bu onDown() yGe Bu onUp() pa a cualquie a de
es os dos iden i icado es, en el sc ip Con olJugado .cs:
Con olJugado .cs
oid Upda e() {
// bo on con olado pulsado
i (Inpu .Ge Bu onDown("Fi e1") || Inpu .Ge Bu onDown("Jump")) {
[...]
}
Y ambién en Con olBas on.cs, donde seguimos u ilizando Qua e nion.Eule ()
pa a que se ealice la con e sión al sis ema de coo denadas que usa Uni y en
el componen e T ans o m:
Con olBas on.cs
oid Upda e () {
i (Inpu .Ge Bu onDown("Fi e1") || Inpu .Ge Bu onDown("Jump")) {
// Golpe
ans o m.localRo a ion = Qua e nion.Eule (35, 90, 35);
}
i (Inpu .Ge Bu onUp("Fi e1") || Inpu .Ge Bu onUp("Jump")) {
// Posicion po de ec o
ans o m.localRo a ion = Qua e nion.Eule (35, 90, 15);
}
}
116

CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
7.3.1. HUD y menú de opciones pa a e sión en RV
con con olado
Po úl imo, end emos que hace los mismos cambios en el HUD que
hicimos adap ando la aplicación a los iso es Ca dboa d, cambiando el modo
de ende ización del can as a Wo ld Space y haciendo que sea hijo de la
cáma a p incipal en la je a quía. La nue a disposición de los obje os después
de odos los cambios se puede ap ecia en la igu a 7.13.
Figu a 7.13: Disposición de los obje os de cáma a y jugado .
En cuan o a la adap ación del menú de opciones, en es a e sión dispone-
mos de bo ones que nos pe mi en ab i el menú con un bo ón del con olado .
Así que, a di e encia de la e sión pa a Ca dboa d, es a ez pod emos in e-
g a lo den o del HUD en modo es e eoscópico. Pa a ello añadi emos los
bo ones al Can as exis en e en modo Wo ld Space. El menú se ab i á con su
p opio bo ón, y a pa i de ese momen o el usua io pod á u iliza el joys ick
pa a elegi en e las dis in as opciones. Es o se mues a en la igu a 7.14.
7.3.2. Compilación y despliegue
Con es o la aplicación ya es á adap ada (y con la uncionalidad o iginal)
a iso es con con olado , lo único que queda es compila la y ans e i la al
disposi i o. De nue o, el p ocedimien o es el mismo que la compilación y
dis ibución en iso es Ca dboa d: hay que cambia la pla a o ma de abajo
a And oid (o iOS, según se equie a) y con igu a los pa áme os en Playe
Se ings, como la e sión de sis ema ope a i o, nomb e e icono de la aplica-
ción, e c.
Cuando la aplicación es é ins alada en el disposi i o, end emos que en-
cende y incula el con olado median e una conexión Blue oo h ( igu a
117
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.14: Menú de opciones en la e sión en RV con con olado .
7.15).
Las igu as 7.16a y 7.16b mues an los bo ones y unciones disponibles
en el con olado . Es e iene cua o modos de uncionamien o asociados a
los bo ones A, B, C, y D, aunque el único que necesi a emos se á el modo
C, pa a aplicaciones VR. Al encende lo, el mando es a á inicialmen e en un
modo que emula el cu so de un a ón. Pa a cambia en e modos, enemos
que pulsa el bo ón @ seguido de la unción deseada, po an o pulsa emos
@ + C y el cu so desapa ece á. En ese momen o pod emos lanza la aplica-
ción no malmen e, y comp oba emos que el joys ick mue e al jugado po el
escena io y los bo ones pos e io es accionan el golpe con el bas ón o ab en el
menú ( igu a 7.17).
118
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.15: Vinculación del con olado a un elé ono And oid.
(a) (b)
Figu a 7.16: Bo ones disponibles (a) y modos de uncionamien o (b).
119
CAPÍTULO 7. ADAPTACIÓN DE LA APLICACIÓN A DISPOSITIVOS
DE REALIDAD VIRTUAL
Figu a 7.17: Aplicación en ejecución.
120
Capí ulo 9
Conclusiones y abajos u u os
En es e p oyec o se han explo ado las dis in as pla a o mas sopo adas
po Uni y, incluyendo las opciones disponibles de ealidad i ual, a a és
del desa ollo de a ias e siones de una aplicación in e ac i a en 3D.
Se han implemen ado cua o e siones dis in as, pa a pode ap o echa
las capacidades de dis in as pla a o mas:
Una e sión como aplicación de esc i o io, pensada pa a maneja se con
eclado y a ón, y que iene como pla a o mas obje i o los sis emas
ope a i os Windows, MacOS, GNU/Linux y ambién la pla a o ma
WebGL.
Una e sión de ealidad i ual pa a se u ilizada con iso es Ca dboa d
con ga illo, u ilizando elé onos mó iles con sis ema ope a i o And oid
o iOS.
Una e sión de ealidad i ual pa a Ca dboa d que se maneja con un
con olado sepa ado conec ado al elé ono mó il, pa a And oid o iOS.
Una e sión pa a disposi i os mó iles And oid o iOS ( elé onos o a-
ble s p incipalmen e) que se con ola median e la pan alla ác il y el
acele óme o del disposi i o.
Se ha podido comp oba que Uni y o ece muchas opciones pa a gene a
ejecu ables pa a múl iples disposi i os y que es una he amien a adecuada
pa a ello, no sólo po la po abilidad de p oyec os en e pla a o mas, sino
ambién po la lexibilidad pa a hace p uebas y p oba cambios ápidamen-
e desde el edi o .
127

CAPÍTULO 9. CONCLUSIONES Y TRABAJOS FUTUROS
Sin emba go, ambién se ha comp obado que hay que ealiza un es ue zo
adicional a la ho a de con e i una aplicación a o os disposi i os, sob e odo
p es ando especial a ención a aspec os como el mé odo de con ol en unción
de los mé odos de en ada, licencias de desa ollo, esoluciones disponibles u
o as ca ac e ís icas especí icas de cada pla a o ma. Es o se une a o as con-
side aciones de diseño a la ho a de desa olla aplicaciones pa a la ealidad
i ual. Es o puede hace que la adap ación no sea i ial.
La aplicación se ha p obado en a ias pla a o mas:
Pla a o mas Especi icaciones del disposi-
i o
Windows, Linux, WebGL Leno o In el Co e i7
4702MQ @2.2GHz, N idia
GT740M, 8GB RAM
MacOS Macbook Ai In el Co e i5
5250U @1.6GHz, In el HD
G aphics 6000, 8GB RAM
And oid LG Nexus 5X ARM 8
@1.8GHz, Ad eno 418, 2GB
RAM
Po o a pa e, la opción inco po ada en el menú de opciones que mues a
la asa de ames po segundo (FPS) pe mi e hace una e aluación del endi-
mien o de las dis in as e siones de la aplicación en a ias pla a o mas. En los
disposi i os en los que se ha ejecu ado la aplicación, la asa de e esco se ha
man enido es able en o no a los 60 FPS en odas las e siones, excep uando
las e siones en RV, donde en algunos momen os bajaba momen áneamen e
a 30 FPS. En las e siones de esc i o io exis e la en aja de pode elegi al-
gunos pa áme os g á icos an es de lanza la aplicación, como la esolución.
Es o puede a ec a al endimien o conside ablemen e. En cualquie caso, la
expe iencia gene al ha sido luida con una esolución de 1920x1080 y calidad
de los g á icos máxima, lo cual se a ibuye al ha dwa e u ilizado y al hecho
de que los modelos 3D empleados no ienen una g an can idad de polígonos,
así como al acabado g á ico gene al, que se diseñó de una o ma minimalis a
pa a e i a p oblemas de endimien o pos e io es, especialmen e en disposi-
i os mó iles.
En cuan o a las posibles ampliaciones o mejo as, la aplicación desa olla-
da consis e en un ni el que si e como una demos ación de una aplicación
128
CAPÍTULO 9. CONCLUSIONES Y TRABAJOS FUTUROS
3D, y se pod ía con inua añadiendo más ni eles, nue as mecánicas (como la
ecogida de i ems o la inco po ación de o os obs áculos) una di icul ad que
ue a aumen ando de o ma p og esi a o incluso un modo mul ijugado . En
de ini i a, el ni el puede se una buena base pa a el desa ollo de un ideo-
juego comple o de mayo du ación.
Exis en o as posibilidades que se pod ían abo da en el campo de la
ealidad i ual, como es inco po a a las aplicaciones la capacidad de cam-
bia en e modo no mal y es e eoscópico en iempo de ejecución [49]. Pa a
ello, y dependiendo de cada pla a o ma, pod ía se necesa io hace cambios
adicionales en el modo de con ol del jugado .
En el caso de la e sión pa a iso es Ca dboa d con ga illo, se pod ían
explo a implemen aciones al e na i as a la u ilizada median e pun os de
con ol, como hace que el jugado se desplaza a hacia donde es é mi ando,
siguiendo en odo momen o la di ección de la cáma a. La ges ión del menú
ambién pod ía cambia se, pa a que apa ecie a al man ene pulsado un bo ón
du an e unos segundos, o pa a pode selecciona las opciones con la p opia
mi ada.
Po úl imo, espec o al p opio p oyec o, se conside a que se han cubie -
o los p incipales obje i os p opues os, mos ando las capacidades de Uni y
como he amien a de desa ollo, y explo ando su capacidad mul ipla a o ma
median e la implemen ación de dis in as e siones adap adas a a ios dispo-
si i os, con especial én asis en aquellos que hacen uso de ealidad i ual.
129
Bibliog a ía
[1] Disponible en <h ps://uni y3d.com/es/public- ela ions>
[Fecha de consul a: 12/06/2017]
[2] Si io web de Un eal Engine
Disponible en
<h ps://www.un ealengine.com/wha -is-un eal-engine-4>
[Fecha de consul a: 04/05/2017]
[3] Si io web de C yEngine
Disponible en <h ps://www.c yengine.com/>
[Fecha de consul a: 04/05/2017]
[4] Disponible en <h ps://uni y3d.com/es/uni y/mul ipla o m/>
[Fecha de consul a: 02/05/2017]
[5] Disponible en
<h ps://en.wikipedia.o g/wiki/Uni y_(game_engine)>
[Fecha de consul a: 27/12/2016]
[6] Tu o iales y documen ación de Uni y
Disponible en <h ps://uni y3d.com/es/lea n>
[Fecha de consul a: 04/05/2017]
[7] Uso de API Vulkan en Uni y
Disponible en
<h ps://blogs.uni y3d.com/es/2016/09/29/in oducing- he- ulkan-
ende e -p e iew/>
[Fecha de consul a: 05/05/2017]
130
BIBLIOGRAFÍA
[8] Ge ing s a ed wi h WebGL de elopmen
Disponible en
<h ps://docs.uni y3d.com/Manual/webgl-ge ings a ed.h ml>
[9] Ge ing s a ed wi h iOS de elopmen
Disponible en
<h ps://docs.uni y3d.com/Manual/iphone-Ge ingS a ed.h ml>
[10] Disponible en
<h ps://docs.uni y3d.com/es/cu en /Manual/and oid-
Ge ingS a ed.h ml>
[11] Licencia de Uni y incluída con ki de desa ollo de WiiU
Disponible en <h ps:// en u ebea .com/2012/11/02/game-
de elope s-s a -you -uni y-3d-engines-in e iew/>
He amien as de desa ollo pa a consolas Nin endo
<h ps://de elope .nin endo.com/ ools>
[Fecha de consul a: 14/05/2017]
[12] Disponible en <h ps://docs.uni y3d.com/Manual/ OS.h ml>
[13] Hocking, Joseph. (2015). Uni y in Ac ion, Manning Publica ions Co.,
Shel e Island, NY
[14] Disponible en <h p:// iz.ase .psu.edu/gho/sem_no es/3d_-
undamen als/h ml/3d_coo dina es.h ml)>
[Fecha de consul a: 05/01/2017]
[15] Disponible en
<h p://www.gamasu a.com/blogs/Sa aCasen/20160713/276970/Whi e_-
Boxing_You _Game.php>
[Fecha de consul a: 10/01/2017]
[16] Disponible en
<h ps://uni y3d.com/es/lea n/ u o ials/ opics/in e ace-
essen ials/hie a chy-and-pa en -child- ela ionships>
[Fecha de consul a: 04/01/2017]
[17] Disponible en
<h ps://docs.uni y3d.com/Sc ip Re e ence/MonoBeha iou .h ml>
[Fecha de consul a: 04/02/2017]
131
BIBLIOGRAFÍA
[18] Disponible en
<h ps://docs.uni y3d.com/Sc ip Re e ence/Physics.Raycas .h ml>
[Fecha de consul a: 05/03/2017]
[19] Iconos ob enidos de <h p://game-icons.ne />
[Fecha de consul a: 22/03/2017]
[20] Imágenes ob enidas de <h p://www.plain ex u es.com>
[Fecha de consul a: 22/03/2017]
[21] Imágenes ob enidas de <h ps://93i.de/p/ ee-skybox- ex u e-se />
Au o : Heiko I gang
Licencia C ea i e Commons
[Fecha de consul a: 09/04/2017]
[22] <h ps://www.asse s o e.uni y3d.com/en/>
[Fecha de consul a: 09/04/2017]
[23] Paque e de ecu sos ob enido de <h p://u3d.as/wg >
Pagina web del au o <h ps://ske ch ab.com/Bek>
[Fecha de consul a: 11/04/2017]
[24] Sonido ob enido de <h ps://www. eesound.o g>
Au o : ’ ’
Licencia C ea i e Commons
<h ps://c ea i ecommons.o g/licenses/by/3.0/>
[Fecha de consul a: 11/04/2017]
[25] Sonido ob enido de <h ps://www. eesound.o g>
Au o : ’Tuudu ’
Licencia C ea i e Commons de dominio público
<h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/>
[Fecha de consul a: 11/04/2017]
[26] Sonido ob enido de <h ps://www. eesound.o g>
Au o : ’Kas en osch’
Licencia C ea i e Commons de dominio público
<h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/>
[Fecha de consul a: 11/04/2017]
132

BIBLIOGRAFÍA
[27] Sonido ob enido de <h ps://www. eesound.o g>
Au o : ’T ipe ’
Licencia C ea i e Commons de dominio público
<h ps://c ea i ecommons.o g/publicdomain/ze o/1.0/>
[Fecha de consul a: 11/04/2017]
[28] Sonido ob enido de <h ps://www. eesound.o g>
Au o : ’ ollko nb o ’
Licencia C ea i e Commons
<h ps://c ea i ecommons.o g/licenses/by-nc/3.0/>
[29] His o ia de la ealidad i ual
Disponible en <h ps://en.wikipedia.o g/wiki/Vi ual_ eali y>
[Fecha de consul a: 06/05/2017]
[30] The Ca e: audio isual expe ience au oma ic i ual en i onmen
Disponible en <h p://dl.acm.o g/ci a ion.c m?doid=129888.129892>
[Fecha de consul a: 12/06/2017]
[31] Sega VR
Disponible en <h p://sega e o.o g/Sega_VR>
[Fecha de consul a: 12/06/2017]
[32] Máquinas Vi uali y
Disponible en <h ps://en.wikipedia.o g/wiki/Vi uali y_(gaming)>
[Fecha de consul a: 12/06/2017]
[33] <h p://www.and oidau ho i y.com/dayd eam- - eady-phones-
specs-727780/>
[Fecha de consul a: 16/04/2017]
[34] Si io web de Oculus Ri disponible en <h ps://www.oculus.com/>
[Fecha de consul a: 06/05/2017]
[35] Disponible en <h ps://www. i e.com/us/ eady/>
[Fecha de consul a: 07/05/2017]
133
BIBLIOGRAFÍA
[36] Disponible en <h ps://en.wikipedia.o g/wiki/HTC_Vi e>
[Fecha de consul a: 07/05/2017]
[37] Disponible en <h ps://en.wikipedia.o g/wiki/PlayS a ion_VR>
[Fecha de consul a: 07/05/2017]
[38] Especi icaciones écnicas de Samsung Gea VR
Disponible en
<h p://www.samsung.com/global/galaxy/gea - /specs/>
[Fecha de consul a: 09/05/2017]
[39] Especi icaciones écnicas de Mic oso Hololens
Disponible en <h ps://de elope .mic oso .com/en-
us/windows/mixed- eali y/hololens_ha dwa e_de ails>
[Fecha de consul a: 09/05/2017]
[40] Ace ca del sopo e na i o pa a ealidad i ual
Disponible en
<h ps://docs.uni y3d.com/Manual/VRO e iew.h ml>
[41] SDK Google VR pa a Uni y
<h ps://de elope s.google.com/ />
[Fecha de consul a: 16/04/2017]
[42] Disponible en
<h ps://de elope .and oid.com/s udio/index.h ml?hl=es-419>
[Fecha de consul a: 17/04/2017]
[43] Disponible en
<h p://www.o acle.com/ echne wo k/ja a/ja ase/downloads/jdk8-
downloads-2133151.h ml>
[44] Disponible en <h ps://de elope s.google.com/ /uni y/download>
[Fecha de consul a: 17/04/2017]
[45] Disponible en <h ps://de elope s.google.com/ /uni y/guide>
[Fecha de consul a: 17/04/2017]
[46] Disponible en <h ps://de elope s.google.com/ /uni y/ge -s a ed>
[Fecha de consul a: 18/04/2017]
134
BIBLIOGRAFÍA
[47] Compilación pa a iOS desde Windows u ilizando XCode
Disponible en
<h ps://uni y3d.com/es/lea n/ u o ials/ opics/mobile-
ouch/building-you -uni y-game-ios-de ice- es ing>
[Fecha de consul a: 16/05/2017]
[48] Uso de Google Ca dboa d sin gi oscopio
Disponible en <h p://buckyd oid.com/ -wi hou -gy oscope/>
[Fecha de consul a: 22/05/2017]
[49] Ac i ación de modo VR median e VR.Se ings
Disponible en
<h ps://docs.uni y3d.com/Sc ip Re e ence/VR.VRSe ings-
enabled.h ml>
[Fecha de consul a: 15/05/2017]
135